正在驗證憑證鏈結

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

本文說明如何在將憑證上傳至 或在 Apigee Edge 中部署 KeyStore 或信任儲存庫這個程序仰賴 使用 OpenSSL 工具包驗證憑證 以及任何可使用 OpenSSL 的環境。

事前準備

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

  • 如果您不熟悉憑證鏈結,請參閱 信任鏈
  • 如果您不熟悉 OpenSSL 程式庫,請參閱 OpenSSL
  • 如要使用本指南中的指令列範例,請安裝或更新 最新版 OpenSSL 用戶端。
  • 確認憑證為 PEM 格式。如果憑證不是 PEM 格式, 請使用 將憑證轉換為支援的格式,以便將其轉換為 PEM 格式。

驗證整個鏈結的憑證主體和核發機構

如要使用 OpenSSL 指令驗證憑證鏈結,請完成 下列章節:

分割憑證鏈結

驗證憑證之前,您必須先將憑證鏈結分割為 憑證

  1. 登入 OpenSSL 用戶端所在的伺服器。
  2. 將憑證鏈結分割為下列憑證 (如果尚未建立):
    • 實體憑證: entity.pem
    • 中繼憑證: intermediate.pem
    • 根憑證: root.pem
    ,瞭解如何調查及移除這項存取權。

下圖為憑證鏈結範例:

憑證鏈結流程:將憑證轉至根憑證的識別憑證

驗證憑證主體和核發者

本節說明如何取得憑證的主體和核發者,以及驗證 具備有效的憑證鏈結。

  1. 執行下列 OpenSSL 指令,取得 Subject 和 來自 entity 的鏈結中的每個憑證 Issuer 要求 root,驗證這些憑證鏈結是適當的憑證鏈結:
    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
            

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

    • 中繼憑證的 SubjectIssuer 相符 。
    • 根憑證的 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 是憑證的名稱。

透過檢查選項驗證憑證到期的範例

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

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 訊息表示 憑證尚未過期。