全部產品
Search
文件中心

Certificate Management Service:SSL認證部署故障排查指南

更新時間:Feb 25, 2025

本文旨在協助您在手動部署SSL認證後未生效或網站顯示不安全時,按照手動部署流程逐個排查,協助您發現並解決部署失敗的問題。

排查思路

  1. 檢查伺服器443連接埠是否允許存取。

    • 如果您使用的是阿里雲ECS伺服器,請前往ECS管理主控台安全性群組頁面,查看是否允許存取443連接埠。關於如何配置安全性群組,請參見管理安全性群組

      image

    • 如果您接入了Web Application Firewall(WAF),請檢查伺服器自身的防火牆設定,確保它們沒有阻止外部對443連接埠的訪問。您可以通過以下方式來查看。

      1. 登入Web Application Firewall3.0控制台。在頂部功能表列,選擇WAF執行個體的資源群組和地區(中国内地非中国内地

      2. 在左側導覽列,單擊接入管理

      3. CNAME接入頁簽,檢查是否允許外部對443連接埠的訪問。

        image

  2. 檢查Web伺服器設定檔。

    • 檢查設定檔中認證檔案名稱和檔案路徑是否正確。確保設定檔中指定的憑證存放區路徑和檔案名稱與伺服器上實際存放的憑證路徑和檔案名稱完全一致。以下是Nginx的配置樣本:

      server {
          #443連接埠號碼為 HTTPS 的預設連接埠號碼
          listen 443 ssl;
          server_name example.com;
      
          #請將以下路徑替換為您自己的SSL認證和私密金鑰檔案路徑
          ssl_certificate /etc/nginx/ssl/example.com.crt;
          ssl_certificate_key /etc/nginx/ssl/example.com.key;
      
          # 其他配置...
      }
    • 檢查設定檔修改後是否儲存成功。

    • 部分Web伺服器(如Nginx和Apache)需要重啟服務,以使修改後的設定檔生效。

      • 重啟Nginx服務。

        sudo nginx -s reload
      • 重啟Apache服務。

        sudo systemctl restart httpd
  3. 檢查認證的有效性。

    • 檢查認證是否在有效期間內,具體步驟如下:

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

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

      3. SSL證書管理頁面,定位到您部署的認證,檢查是否到期。

        如果認證已到期,請您及時續約認證。以續約正式認證為例,具體操作,請參見SSL正式認證續約

        image

    • 檢查認證的狀態是否是已簽發,以及綁定網域名稱是否正確。

      image

    • 確保正確安裝了認證,包括但不限於:已將認證檔案放置在正確的認證目錄,配置Web伺服器(如Nginx、Apache等)設定檔的認證配置部分以使認證生效等。

    • 如果您使用的是自我簽署憑證,請確認當前瀏覽器是否已信任該認證。

      接下來將以Chrome瀏覽器為例,向您示範如何確認瀏覽器是否信任該認證。

      1. 在瀏覽器中開啟使用自我簽署憑證的網站。

      2. 單擊地址欄的image表徵圖:如果瀏覽器已信任該認證,地址欄左側沒有警告標誌。如果不信任,會有一個紅色的image警告圖示,如下圖。

        image

      3. 查看認證詳細資料:查看認證資訊視窗中的詳細資料,如果瀏覽器不信任該認證,會顯示相關的警告資訊。

    • 如果您使用的是非自我簽署憑證,則需確保該認證是否由受信任的CA頒發,否則瀏覽器可能會因為不信任該認證而阻止串連。

      接下來將以Chrome瀏覽器為例,向您示範如何確認非自簽名的認證是否由受信任的CA頒發。

      • 查看認證資訊:

        1. 單擊地址欄左側的image表徵圖。

        2. 單擊串連是安全的來顯示串連詳情。

        3. 單擊“認證(有效)”或類似選項。如果認證由受信任的CA頒發,瀏覽器會顯示認證有效且沒有警告資訊。

          image

      • 查看頒發者資訊:在彈出的認證資訊視窗中,尋找“頒發者”欄位,確認頒發者的一般名稱(CN)、組織名(O)和其他相關資訊,查看是否包含知名的CA名稱。

        image

  4. 驗證網域名稱是否解析正確。

    • 驗證DNS記錄是否指向正確的IP地址,尤其是如果您最近更改了主機或IP地址。

      1. 登入Alibaba Cloud DNS產品控制台

      2. 權威網域名稱解析 頁面, 權威網域名稱 頁簽下,單擊目標網域名稱進入到 解析設定 頁面。

        image

      3. 解析設定 頁面,單擊 添加記錄 按鈕。查看記錄值是否與自己的IP地址匹配,如果不匹配,單擊修改按鈕進行修改。

        image

    • 如果最近更改了網域名稱解析設定,解析結果生效可能存在一定的延遲。可以嘗試清除本地DNS緩衝重試,或耐心等待一段時間即可。

      以下內容將向您示範如何在不同作業系統中清除本地DNS緩衝:

      Windows

      1. 開啟命令提示字元:按下Win + R鍵,輸入cmd,然後按Enter鍵。

      2. 在命令提示字元中輸入以下命令,然後按Enter 鍵:

        ipconfig /flushdns
      3. 出現“已成功重新整理 DNS 解析緩衝。”提示表示已成功清除本地DNS緩衝。

      macOS

      1. 開啟終端:

        可以通過按Command + Space鍵開啟Spotlight搜尋,然後輸入“Terminal”來找到終端。

      2. 在終端上輸入以下命令來清除macOS中的DNS緩衝,然後按Enter鍵:

        #dscacheutil是一個命令列工具,用於與系統的快取服務互動。
        sudo dscacheutil -flushcache
      3. 接著在終端上輸入以下命令,通過發送HUP訊號來重啟mDNSResponder進程,然後按Enter 鍵:

        #mDNSResponder是負責DNS服務的後台進程,重啟它可以確保緩衝被完全重新整理。
        sudo killall -HUP mDNSResponder
      4. 如果沒有出現任何報錯資訊,則命令執行成功。

      說明

      在操作過程中可能會提示輸入管理員密碼,密碼輸入完成直接斷行符號即可。

      Linux

      在Linux系統上,清除本地DNS緩衝的方法取決於系統使用的DNS快取服務。以下是幾種常見的DNS快取服務及其清除緩衝的方法:

      1. systemd-resolved

        如果您的Linux系統使用systemd-resolved來管理DNS緩衝,可以通過以下命令清除緩衝:

        sudo systemd-resolve --flush-caches
      2. nscd (Name Service Cache Daemon)

        如果您的Linux系統使用nscd來管理DNS緩衝,可以通過重啟nscd服務來清除緩衝:

        sudo service nscd restart

        或者:

        sudo systemctl restart nscd
      3. dnsmasq

        如果您的Linux系統使用dnsmasq來管理DNS緩衝,可以通過重啟dnsmasq服務來清除緩衝:

        sudo service dnsmasq restart

        或者:

        sudo systemctl restart dnsmasq
      4. BIND

        如果您的Linux系統使用BIND(Berkeley Internet Name Domain)來管理DNS緩衝,可以通過以下命令清除緩衝:

        sudo rndc flush
      5. NetworkManager

        某些Linux發行版使用NetworkManager來管理網路設定,包括DNS緩衝。可以通過重啟NetworkManager服務來清除緩衝:

        sudo service network-manager restart

        或者:

        sudo systemctl restart NetworkManager
      說明

      根據您系統中使用的DNS快取服務,選擇相應的命令來清除DNS緩衝。執行這些命令通常需要管理員權限,因此需要在命令前添加sudo。清除DNS緩衝後,系統將從DNS伺服器擷取最新的網域名稱解析資訊,這在解決網路訪問問題時可能會很有協助。

  5. 清理瀏覽器緩衝。

    • 瀏覽器可能會緩衝舊的 SSL 憑證資訊。請嘗試清理瀏覽器緩衝後,重新訪問您的網站。

    • 嘗試在無痕模式或隱私模式下訪問您的網站。Chrome瀏覽器的操作如下圖所示,如果您使用的是Edge瀏覽器,則需要單擊建立InPrivate視窗

      image

  6. 驗證憑證鏈結是否完整。

    您需要確保整個憑證鏈結是完整的,包括中間認證(Intermediate Certificate)和根憑證(Root Certificate)。瀏覽器通常需要驗證從根憑證到伺服器憑證的完整憑證鏈結,如果憑證鏈結不完整,可能會導致瀏覽器不信任該認證。

    說明
    • 根憑證是認證信任鏈結的起始,用於驗證由該CA簽發的所有下級認證的真實性。對於由受信任的CA簽發的SSL認證,其根憑證已預先安裝至主流Web瀏覽器(Google Chrome、Mozilla Firefox、Microsoft Edge等)或作業系統(Windows、macOS、Android和iOS移動平台等),但是對於未預埋根憑證的用戶端(App、Java用戶端、舊版本瀏覽器、loT裝置等),您需要手動下載與伺服器憑證類型一致的根憑證,並手動安裝到對應的用戶端,確保用戶端與伺服器建立HTTPS安全連線。選擇與您的SSL認證類型一致的根憑證進行手動下載,請參見下載根憑證

    • 中間認證位於根憑證和使用者實體認證(如SSL認證)之間,由上級CA頒發給下級CA。在阿里雲的數位憑證管理服務中,下載的PEM檔案包含伺服器憑證和中間認證。私密金鑰(KEY檔案)與伺服器憑證配對,以確保HTTPS通訊的安全。使用中間認證有助於降低根憑證直接簽發SSL認證的風險。若根憑證需撤銷,直接簽名的認證將失去信任。通過中間認證的私密金鑰簽名使用者的SSL認證,可以有效降低這種風險。下載中間認證,請參見下載SSL認證

    憑證鏈結的缺失也是導致SSL認證驗證失效的重要原因之一。通常情況下,PC 端瀏覽器都可以通過Authority Info Access(權威資訊訪問)的URL連結獲得中間認證,但在部分Android系統的瀏覽器上訪問時會出現認證不可信或無法訪問等問題。主要原因在於部分Android系統的瀏覽器並不支援通過 Authority Info Access(權威資訊訪問)的URL連結獲得中間認證,這時您需要把憑證鏈結檔案按照SSL憑證鏈結的結構合并為一個檔案重新部署到伺服器上,瀏覽器在與伺服器串連時將會下載使用者認證和中間認證,使您的瀏覽器訪問時顯示為可信認證。SSL憑證鏈結結構如下所示:

    -----BEGIN CERTIFICATE-----
    網站認證
    -----END CERTIFICATE-----
    
    -----BEGIN CERTIFICATE-----
    CA 中間認證機構
    -----END CERTIFICATE-----
    
    -----BEGIN CERTIFICATE-----
    CA 根憑證機構
    -----END CERTIFICATE-----
    說明

    SSL憑證鏈結的結構,一般是由網站認證>CA中間認證機構>CA根憑證機構構成,中間認證還可能存在多層關係。

    • 如何查看SSL憑證鏈結?

      此處以Chrome瀏覽器為例。

      1. 在瀏覽器地址欄單擊image表徵圖並在彈出的資訊卡片中,單擊串連是安全的。

      2. 在彈出的串連是安全的資訊視窗,單擊認證有效。

      3. 單擊詳細資料,查看憑證階層,即可查看 SSL 憑證鏈。如下圖所示:

        image

    • SSL憑證鏈結如何補全?

      • 如果認證是通過阿里雲申請的,您可以直接重新下載認證檔案,其中已經包含完整的憑證鏈結。

      • 在Windows上手動開啟認證,找到中間認證,並將其匯出為 Base64 格式,然後將匯出的內容複寫到原認證中。

  7. 確認私密金鑰的正確性。

    • 請確保上傳到Web伺服器上的認證和私密金鑰是匹配的,並且格式正確。

      通常,在產生CSR(Certificate Signing Request)時會建立一個私密金鑰,這個私密金鑰必須用於同一認證。這裡以Linux系統為例指導您如何來核實私密金鑰是否與認證匹配:

      1. 登入雲端服務器後台並使用以下命令進入認證的安裝目錄:

        #其中/為根目錄,ssl路徑僅為樣本,具體位置需要根據您實際認證安裝目錄來確定。
        cd / ssl
      2. 使用以下命令來查看認證的公開金鑰資訊,並得到其MD5值:

        #your_certificate.pem改為您雲端服務器認證目錄下的PEM檔案
        sudo openssl x509 -in your_certificate.pem -noout -pubkey | openssl md5
      3. 使用以下命令來查看私密金鑰檔案中的公開金鑰資訊,並得到其MD5值:

        # your_private_key.key改為您雲端服務器認證目錄下的私密金鑰檔案
        sudo openssl rsa -in your_private_key.key -pubout | openssl md5
      4. 比較兩個命令輸出的MD5值,如果相同,則說明私密金鑰與認證匹配。

        image

    • 如果私密金鑰丟失或損壞,您可能需要重建私密金鑰並請求新的認證。

  8. 檢查瀏覽器安全色性。

    • 確保您的認證格式和加密套件與主流瀏覽器安全色。

      確保伺服器上的認證格式和加密套件與主流瀏覽器安全色,是保障網站安全的重要步驟。以下是一些方法來確保相容性:

      • 使用受信任的憑證授權單位(CA)

        • 選擇一個受信任的憑證授權單位(CA)來頒發您的SSL/TLS認證。主流瀏覽器會自動信任這些CA頒發的認證。

      • 使用正確的認證格式

        • 確保您的認證是X.509格式,這是SSL/TLS認證的標準格式。

          要查看自己的認證是否是X.509格式,您可以使用以下方法來檢查認證檔案的內容和格式。

          使用 openssl 命令列工具查看認證內容

          #請根據您認證檔案的實際安裝路徑替換 /ssl/cert.pem
          sudo openssl x509 -in /ssl/cert.pem -text -noout

          如果認證是X.509格式,這個命令會輸出認證的詳細資料,包括版本、序號、簽名演算法、頒發者、有效期間、公開金鑰資訊等。

          樣本輸出:

          Certificate:
              Data:
                  Version: 3 (0x2)
                  Serial Number:
                       01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef
                  Signature Algorithm: sha256WithRSAEncryption
                  Issuer: C = US, O = DigiCert Inc
                  Validity
                      Not Before: Jan 17 00:00:00 2025 GMT
                      Not After : Jan 17 23:59:59 2026 GMT
                  Subject: CN = example.com
                  Subject Public Key Info:
                      Public Key Algorithm: rsaEncryption
                          RSA Public-Key: (2048 bit)
                          ......

          如果這個命令成功並顯示了認證的詳細資料,那麼您的認證就是X.509格式。

        • 使用PEM格式(通常是.crt.pem檔案)來儲存認證和中間憑證鏈結。

      • 使用現代加密套件

        • 設定管理員使用現代加密套件,如TLS 1.2或TLS 1.3。這些版本提供更好的安全性和相容性。

        • 停用不安全的協議和密碼編譯演算法,如SSL 2.0、SSL 3.0、TLS 1.0、TLS 1.1、RC4和3DES。

    • 測試不同瀏覽器和裝置上的串連情況。

  9. 確保放置認證檔案的目錄具有正確的讀取許可權。

    確保放置認證檔案的目錄具有正確的讀取許可權,以便Web伺服器能夠訪問這些檔案。

    這裡以Linux為例,指導您確認認證檔案的目錄是否具有適當的讀取許可權。

    1. 使用ls -ld命令查看目錄許可權。

      #請根據您認證檔案的實際安裝路徑替換樣本路徑 /ssl。
      sudo ls -ld /ssl

      這將輸出類似如下的資訊:

      image

      說明

      許可權欄位(如drwxr-xr-x)的含義:

      • 第一個字元d表示這是一個目錄。

      • 接下來的三個字元rwx表示所有者的許可權:讀(r)、寫(w)、執行(x)。

      • 中間的三個字元r-x表示同組使用者的許可權:讀(r)和執行(x)。

      • 最後的三個字元r-x表示其他使用者的許可權:讀(r)和執行(x)。

    2. 確認許可權是否適當。

      • 讀取許可權:確保相關使用者或服務對目錄具有讀(r)許可權。

      • 執行許可權:對於目錄,執行(x)許可權允許使用者進入目錄,即使用cd命令切換到該目錄。

    3. (可選)修改許可權。

      如果需要更改許可權,可以使用chmod命令來進行修改:

      #請根據您認證檔案的實際安裝路徑替換樣本路徑 /ssl。
      sudo chmod 750 /ssl
      說明

      750許可權表示:

      • 所有者具有讀、寫和執行許可權。

      • 同組使用者具有讀和執行許可權。

      • 其他使用者沒有許可權。

    通過這些步驟,您可以確認並調整Linux伺服器上某個目錄的讀取許可權,以確保安全性和功能性。

說明

不同網站的代碼實現邏輯可能存在差異,建議您仔細查閱Web伺服器和應用程式的記錄檔,尋找任何與SSL相關的錯誤資訊,以擷取問題的具體線索。如仍有疑問,請聯絡商務經理進行諮詢