操作場景
本文檔以證書名稱 menglinfeng.top 為例。
Nginx 版本以 nginx/1.18.0 為例。
當前服務器的操作系統為 CentOS 7,由于操作系統的版本不同,詳細操作步驟略有區別。
安裝 SSL 證書前,請您在 Nginx 服務器上開啟 “443” 端口,避免證書安裝后無法啟用 HTTPS。
前提條件
已準備遠程文件拷貝軟件,例如 WinSCP(建議從官方網站獲取最新版本)。
已準備遠程登錄工具,例如 PuTTY 或者 Xshell(建議從官方網站獲取最新版本)。
已購買國密標準(SM2)SSL 證書。
- 遠程登錄 Nginx 服務器。例如,使用 “PuTTY” 工具 登錄。
- 安裝編譯工具:如果您的系統是全新的,請先在服務器上安裝 C++ 開發環境、pcre-devel、zlib-devel 軟件為編譯提供環境支持。您可以使用如下命令進行安裝。
#安裝 C++ 開發環境
yum install -y gcc gcc-c++
#安裝 pcre-devel
yum install pcre-devel -y
#安裝 zlib-devel
yum install zlib-devel -y
3.下載并編譯安裝 Nginx:您可以通過在服務器上按以下順序輸入命令,下載 Nginx 國密版和國密模塊至服務器并編譯安裝,由于操作系統的版本不同,詳細操作步驟略有區別。(nginx安裝)
操作步驟
- 請在 SSL 證書管理控制臺 中選擇您需要安裝的證書并單擊下載。
- 在彈出的 “證書下載” 窗口中,服務器類型選擇 Nginx,單擊下載并解壓縮 menglinfeng.top 證書文件包到本地目錄。
解壓縮后,可獲得相關類型的證書文件。其中包含 cloud.tencent.com_nginx 文件夾:
文件夾名稱:menglinfeng.top_nginx
文件夾內容:
menglinfeng.top_bundle.crt 證書文件
menglinfeng.top_bundle.pem 證書文件(可忽略該文件)
menglinfeng.top.key 私鑰文件
menglinfeng.top.csr CSR 文件 - 使用 “WinSCP”(即本地與遠程計算機間的復制文件工具)登錄 Nginx 服務器。
- 將已獲取到的 menglinfeng.top_bundle.crt 證書文件和 menglinfeng.top.key 私鑰文件從本地目錄拷貝到 Nginx 服務器的 /usr/local/nginx/conf 目錄(此處為 Nginx 默認安裝目錄,請根據實際情況操作)下。
- 遠程登錄 Nginx 服務器。例如,使用 “PuTTY” 工具 登錄。
- 編輯 Nginx 根目錄下的 conf/nginx.conf 文件。修改內容如下:
server {#SSL 訪問端口號為 443listen 443 ssl; #填寫綁定證書的域名server_name menglinfeng.top; #證書文件名稱ssl_certificate menglinfeng.top_bundle.crt; #私鑰文件名稱ssl_certificate_key menglinfeng.top.key; ssl_session_timeout 5m;#請按照以下協議配置ssl_protocols TLSv1.2 TLSv1.3; #請按照以下套件配置,配置加密套件,寫法遵循 openssl 標準。ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on;location / {#網站主頁路徑。此路徑僅供參考,具體請您按照實際目錄操作。#例如,您的網站運行目錄在/etc/www下,則填寫/etc/www。root html; index index.html index.htm;}}
- 在 Nginx 根目錄下,通過執行以下命令驗證配置文件問題。
./sbin/nginx -t
若存在,請您重新配置或者根據提示修改存在問題。
可能會報錯
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf
解決方法:nginx開啟https報錯
若不存在,請執行 步驟8。
8. 重啟 Nginx,即可使用 https://menglinfeng.top.com 進行訪問。
Nginx 配置Http和Https共存
server {listen 80;listen 443 ssl;#ssl on;server_name menglinfeng.top;ssl_certificate /usr/local/Tengine/sslcrt/ menglinfeng.top.crt;ssl_certificate_key /usr/local/Tengine/sslcrt/ menglinfeng.top.Key;
}
把ssl on;這行去掉,ssl寫在443端口后面。這樣http和https的鏈接都可以用
Nginx 配置SSL安全證書重啟避免輸入密碼
可以用私鑰來做這件事。生成一個解密的key文件,替代原來key文件。
openssl rsa -in server.key -out server.key.unsecure
Nginx SSL性能調優
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
Nginx 配置Http跳轉Https
server {listen 80;server_name menglinfeng.top;rewrite ^(.*) https://$server_name$1 permanent;
}
server {listen 443;server_name menglinfeng.top;root /home/www;ssl on;ssl_certificate /etc/nginx/certs/server.crt;ssl_certificate_key /etc/nginx/certs/server.key;
}