全部產品
Search
文件中心

Certificate Management Service:Nginx或Tengine伺服器配置SSL認證

更新時間:Oct 18, 2024

本文將全面介紹如何在Nginx或Tengine伺服器配置SSL認證,具體包括下載和上傳認證檔案,在Nginx上配置認證檔案、憑證鏈結和認證密鑰等參數,以及安裝認證後結果的驗證。成功配置SSL認證後,您將能夠通過HTTPS加密通道安全訪問Nginx伺服器。

重要
  • 本文以CentOS 8.0 64位作業系統、Nginx 1.14.2為例介紹。不同版本的作業系統或Web伺服器,部署操作可能有所差異,如有問題,請聯絡商務經理進行諮詢

  • 如果您使用的是阿里雲Elastic Compute Service(Elastic Compute Service),必須在ECS管理主控台安全性群組頁面,允許存取443連接埠,否則網站訪問可能出現異常。關於如何配置安全性群組,請參見添加安全性群組規則

  • 本文中出現認證檔案名稱的地方,統一使用cert-file-name進行描述。例如,本文中用到的認證檔案為cert-file-name.pem,認證私密金鑰檔案為cert-file-name.key。在實際操作過程中,您必須使用正確的認證檔案名稱替換範例程式碼中的cert-file-name

前提條件

  • 已通過數位憑證管理服務控制台簽發認證。具體操作,請參見購買SSL認證提交認證申請

  • SSL認證綁定的網域名稱已完成DNS解析,即您的網域名稱與主機IP地址相互映射。您可以通過DNS驗證認證工具,檢測網域名稱DNS解析是否生效。具體操作,請參見DNS生效驗證

  • 已在Web伺服器開放443連接埠(HTTPS通訊的標準連接埠)。

    如果您使用的是阿里雲ECS伺服器,請確保已經在安全性群組規則入方向添加TCP 443連接埠。具體操作,請參見添加安全性群組規則

步驟一:下載SSL認證

  1. 登入數位憑證管理服務控制台

  2. 在左側導覽列,選擇認證管理 > SSL認證管理

  3. SSL證書管理頁面,定位到目標認證,在操作列,單擊下載

  4. 伺服器類型為Nginx的操作列,單擊下載

    image..png

  5. 解壓縮已下載的SSL認證壓縮包。

    根據您在提交認證申請時選擇的CSR產生方式,解壓縮獲得的檔案不同,具體如下表所示。in

    CSR產生方式

    認證壓縮包包含的檔案

    系統產生

    • 認證檔案(PEM格式):Nginx支援安裝PEM格式的檔案,PEM格式的認證檔案是採用Base64編碼的文字檔,且包含完整憑證鏈結。解壓後,該檔案以認證ID_認證綁定網域名稱命名。

    • 私密金鑰檔案(KEY格式):預設以認證綁定網域名稱命名。

    手動填寫

    • 如果您填寫的是通過數位憑證管理服務控制台建立的CSR,下載後包含的認證檔案與系統產生的一致。

    • 如果您填寫的不是通過數位憑證管理服務控制台建立的CSR,下載後只包括認證檔案(PEM格式),不包含認證密碼或私密金鑰檔案。您可以通過認證工具,將認證檔案和您持有的認證密碼或私密金鑰檔案轉換成所需格式。轉換認證格式的具體操作,請參見認證格式轉換

步驟二:在Nginx伺服器安裝認證

  1. 執行以下命令,在Nginx的conf目錄下建立一個用於存放認證的目錄

    cd /usr/local/nginx/conf  #進入Nginx預設設定檔目錄。該目錄為手動編譯安裝Nginx時的預設目錄,如果您修改過預設安裝目錄或使用其他方式安裝,請根據實際配置調整。
    mkdir cert  #建立認證目錄,命名為cert。
  2. 將認證檔案和私密金鑰檔案上傳到Nginx伺服器的認證目錄(/usr/local/nginx/conf/cert)。

    說明

    您可以使用遠程登入工具附帶的本地檔案上傳功能,上傳檔案。例如PuTTy、Xshell或WinSCP等。如果您使用的阿里雲Elastic Compute Service,上傳檔案具體操作,請參見上傳或下載檔案(Windows)上傳檔案到Linux雲端服務器

  3. 編輯Nginx設定檔nginx.conf,修改與認證相關的配置。

    1. 執行以下命令,開啟設定檔。

      vim /usr/local/nginx/conf/nginx.conf
      重要

      nginx.conf預設儲存在/usr/local/nginx/conf目錄下。如果您修改過nginx.conf的位置,可以執行nginx -t,查看nginx的設定檔路徑,並將/usr/local/nginx/conf/nginx.conf進行替換。

    2. 在nginx.conf中定位到server屬性配置

      image..png

      說明

      如果確定nginx.conf或include指令所引用的檔案不存在上圖server塊,請您自行手動進行添加。

    3. 刪除行首注釋符號#,並參考如下樣本進行修改。

      server {
           #HTTPS的預設訪問連接埠443。
           #如果未在此處配置HTTPS的預設訪問連接埠,可能會造成Nginx無法啟動。
           listen 443 ssl;
           
           #填寫認證綁定的網域名稱
           server_name <yourdomain>;
       
           #填寫認證檔案絕對路徑
           ssl_certificate cert/<cert-file-name>.pem;
           #填寫認證私密金鑰檔案絕對路徑
           ssl_certificate_key cert/<cert-file-name>.key;
       
           ssl_session_cache shared:SSL:1m;
           ssl_session_timeout 5m;
      	 
           #自訂設定使用的TLS協議的類型以及加密套件(以下為配置樣本,請您自行評估是否需要配置)
           #TLS協議版本越高,HTTPS通訊的安全性越高,但是相較於低版本TLS協議,高版本TLS協議對瀏覽器的相容性較差。
           ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
           ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
      
           #表示優先使用服務端加密套件。預設開啟
           ssl_prefer_server_ciphers on;
       
       
          location / {
                 root html;
                 index index.html index.htm;
          }
      }
    4. 可選:設定HTTP請求自動跳轉HTTPS。

      如果您希望所有的HTTP訪問自動跳轉到HTTPS頁面,可通過rewrite指令重新導向到HTTPS。

      重要

      以下程式碼片段需要放置在nginx.conf檔案中server {}程式碼片段後面,即設定HTTP請求自動跳轉HTTPS後,nginx.conf檔案中會存在兩個server {}程式碼片段。

      server {
          listen 80;
          #填寫認證綁定的網域名稱
          server_name <yourdomain>;
          #將所有HTTP請求通過rewrite指令重新導向到HTTPS。
          rewrite ^(.*)$ https://$host$1;
          location / {
              index index.html index.htm;
          }
      }

      配置效果如下圖所示:

      image..png

  4. 執行以下命令,重啟Nginx服務。

    cd /usr/local/nginx/sbin  #進入Nginx服務的可執行目錄。
    ./nginx -s reload  #重新載入設定檔。
    說明
    • 報錯the "ssl" parameter requires ngx_http_ssl_module:您需要重新編譯Nginx並在編譯安裝的時候加上--with-http_ssl_module配置。

    • 報錯"/cert/3970497_demo.aliyundoc.com.pem":BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/cert/3970497_demo.aliyundoc.com.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file):您需要去掉認證相對路徑最前面的/。例如,您需要去掉/cert/cert-file-name.pem最前面的/,使用正確的相對路徑cert/cert-file-name.pem

步驟三:驗證SSL認證是否配置成功

認證安裝完成後,您可通過訪問認證的綁定網域名稱驗證該認證是否安裝成功。

https://yourdomain   #需要將yourdomain替換成認證綁定的網域名稱。

如果網頁地址欄出現小鎖標誌,表示認證已經安裝成功。

image..png

相關文檔

如何解決SSL認證部署後未生效或網站顯示不安全