正在驗證憑證鏈結

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

本文說明如何驗證憑證鏈結,再將憑證上傳至 Apigee Edge 的金鑰儲存區或信任儲存區。這個程序會使用 OpenSSL 工具包驗證憑證鏈結,適用於任何可使用 OpenSSL 的環境。

事前準備

使用本文中的步驟前,請務必瞭解下列主題:

  • 如果您不熟悉憑證鏈結,請參閱「信任鏈結」。
  • 如果您不熟悉 OpenSSL 程式庫,請參閱 OpenSSL
  • 如要使用本指南提供的指令列範例,請安裝或更新至最新版 OpenSSL 用戶端。
  • 確認憑證採用 PEM 格式。如果憑證不是 PEM 格式,請按照「 將憑證轉換為支援的格式」一文中的操作說明,將憑證轉換為 PEM 格式。

驗證完整鏈結的憑證主體和核發單位

如要使用 OpenSSL 指令驗證憑證鏈結,請完成下列各節所述步驟:

分割憑證鏈結

驗證憑證前,請按照下列步驟將憑證鏈結分割為個別憑證:

  1. 登入 OpenSSL 用戶端所在的伺服器。
  2. 將憑證鏈結分割為下列憑證 (如果尚未分割):
    • 實體憑證: entity.pem
    • 中繼憑證: intermediate.pem
    • 根憑證: root.pem

下圖顯示憑證鏈結範例:

憑證鏈結流程:身分憑證 -> 中繼憑證 -> 根憑證

驗證憑證主體和核發機構

本節說明如何取得憑證的主體和簽發者,並驗證您是否擁有有效的憑證鏈結。

  1. 執行下列 OpenSSL 指令,取得鏈結中每個憑證的 SubjectIssuer (從 entityroot),並確認這些憑證構成正確的憑證鏈結:
    openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'
        

    其中 certificate 是憑證的名稱。

  2. 確認鏈結中的憑證符合下列規範:
    • 每個憑證的 Subject 都與鏈結中前一個憑證的 Issuer 相符 (Entity 憑證除外)。
    • 根憑證的 SubjectIssuer 相同。

    如果鏈結中的憑證符合這些規範,則視為完整且有效。

    憑證鏈結驗證範例

    以下範例是 OpenSSL 指令的輸出內容,適用於含有三張憑證的範例憑證鏈結:

    實體憑證

    openssl x509 -text -in entity.pem | grep -E '(Subject|Issuer):'
    
    Issuer: C = US, O = Google Trust Services, CN = GTS CA 1O1
    Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.enterprise.apigee.com
            

    中繼憑證

    openssl x509 -text -in intermediate.pem  | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: C = US, O = Google Trust Services, CN = GTS CA 1O1
            

    根憑證

    openssl x509 -text -in root.pem | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
            

    在上述範例中,請注意下列事項:

    • 中繼憑證的 Subject 與實體憑證的 Issuer 相符。
    • 根憑證的 Subject 與中繼憑證的 Issuer 相符。
    • 根憑證中的 SubjectIssuer 相同。

    從上述範例中,您可以確認範例憑證鏈結是否有效。

驗證憑證主體和核發機構雜湊

本節說明如何取得憑證主體和簽發者的雜湊值,並驗證您是否擁有有效的憑證鏈結。

驗證憑證的雜湊序列是很好的做法,因為這有助於找出問題,例如憑證的通用名稱 (CN) 含有不必要的空格或特殊字元。

  1. 執行下列 OpenSSL 指令,取得鏈結中每個憑證的 hash 序列 (從 entityroot),並確認這些憑證構成正確的憑證鏈結。
  2. openssl x509 -hash -issuer_hash -noout -in certificate
        

    其中 certificate 是憑證的名稱。

  3. 確認鏈結中的憑證符合下列規範:
    • 每個憑證的 Subject 都與鏈結中前一個憑證的 Issuer 相符 (Entity 憑證除外)。
    • 根憑證的 SubjectIssuer 相同。

    如果鏈結中的憑證符合這些規範,則憑證鏈結會視為完整且有效。

    透過雜湊序列驗證憑證鏈結的範例

    以下範例是 OpenSSL 指令的輸出內容,適用於含有三張憑證的憑證鏈結:

    openssl x509 -in entity.pem -hash -issuer_hash -noout
    c54c66ba #this is subject hash
    99bdd351 #this is issuer hash
        
    openssl x509 -in intermediate.pem -hash -issuer_hash -noout
    99bdd351
    4a6481c9
        
    openssl x509 -in root.pem -hash -issuer_hash -noout
    4a6481c9
    4a6481c9
        

    在上述範例中,請注意下列事項:

    • 中繼憑證的 subject hash 與實體憑證的 issuer hash 相符。
    • 根憑證的 subject hash 與核發者憑證的 issuer hash 相符。
    • 根憑證中的 subjectissuer hash 相同。

    從上述範例中,您可以確認範例憑證鏈結是否有效。

驗證憑證到期日

本節說明如何使用下列方法,驗證鏈結中的所有憑證是否已過期:

  • 取得憑證的開始和結束日期。
  • 取得有效期限狀態。

開始和結束日期

執行下列 OpenSSL 指令,取得鏈結中每個憑證的開始和結束日期 (從 entityroot),並確認鏈結中的所有憑證均有效 (開始日期早於今天),且未過期。

透過開始和結束日期驗證憑證到期日的範例

openssl x509 -startdate -enddate -noout -in entity.pem
notBefore=Feb  6 21:57:21 2020 GMT
notAfter=Feb  4 21:57:21 2021 GMT
openssl x509 -startdate -enddate -noout -in intermediate.pem
notBefore=Jun 15 00:00:42 2017 GMT
notAfter=Dec 15 00:00:42 2021 GMT
openssl x509 -startdate -enddate -noout -in root.pem
notBefore=Apr 13 10:00:00 2011 GMT
notAfter=Apr 13 10:00:00 2022 GMT

到期狀態

執行下列 OpenSSL 指令,檢查憑證是否已過期或即將在 N seconds 內到期。這會根據目前的系統日期,傳回憑證的到期狀態。

openssl x509 -checkend <N Seconds> -noout -in certificate

其中 certificate 是憑證的名稱。

透過 checkend 選項驗證範例憑證是否過期

下列指令會使用 0 seconds 檢查憑證是否已過期:

openssl x509 -checkend 0 -noout -in entity.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in intermediate.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in root.pem
Certificate will not expire

在本例中,訊息 Certificate will not expire 表示憑證尚未過期。