您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
本文說明在將憑證上傳至 Apigee Edge 中的 KeyStore 或信任儲存庫之前,如何驗證憑證鏈。這個程序需要使用 OpenSSL 工具包來驗證憑證鏈,且適用於任何提供 OpenSSL 的環境。
事前準備
使用本文件中的步驟前,請務必瞭解下列主題:
- 如果不熟悉憑證鏈,請參閱信任鏈相關說明。
- 如果您不熟悉 OpenSSL 程式庫,請參閱 OpenSSL。
- 如要使用本指南中的指令列範例,請安裝或更新 OpenSSL 用戶端的最新版本。
- 確認憑證為 PEM 格式。如果憑證不是 PEM 格式,請按照 將憑證轉換為支援的格式一文中的操作說明,將憑證轉換為 PEM 格式。
正在驗證完整鏈結的憑證主體和核發者
如要使用 OpenSSL 指令驗證憑證鏈結,請完成下列各節所述的步驟:
分割憑證鏈結
在驗證憑證之前,您需要先按照下列步驟將憑證鏈結分割成不同的憑證:
- 登入存在 OpenSSL 用戶端的伺服器。
- 將憑證鏈結分割成下列憑證 (如果尚未完成的話):
-
實體憑證:
entity.pem
-
中繼憑證:
intermediate.pem
-
根憑證:
root.pem
下圖顯示憑證鏈結範例:
驗證憑證主體和核發者
本節說明如何取得憑證的主體和核發者,並驗證你具備有效的憑證鏈。
-
執行下列 OpenSSL 指令,取得
entity
至root
鏈結中每個憑證的Subject
和Issuer
,並確認這些憑證會形成適當的憑證鏈:openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'
其中 certificate 是憑證的名稱。
-
確認鏈結中的憑證符合下列規範:
-
每個憑證的
Subject
與鏈結中前一個憑證的Issuer
相符 (Entity
憑證除外)。 -
根憑證的
Subject
和Issuer
相同。
如果鏈結中的憑證符合這些規範,則憑證鏈結為完整且有效。
憑證鏈驗證範例
以下是含有三個憑證的範例憑證鏈結的 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
相符。 -
根憑證中的
Subject
和Issuer
相同。
透過上述範例,您可以確認範例憑證鏈結有效。
-
每個憑證的
驗證憑證主體和核發者雜湊
本節說明如何取得憑證主體和核發者的雜湊,並確認您已具備有效的憑證鏈。
建議您驗證憑證的雜湊序列,因為這有助於找出含有不需要空間或特殊字元的憑證一般名稱 (CN) 等問題。
- 執行下列 OpenSSL 指令,從
entity
到root
取得鏈結中每個憑證的hash
序列,並確認這些憑證會形成適當的憑證鏈。 - 確認鏈結中的憑證符合下列規範:
-
每個憑證的
Subject
與鏈結中前一個憑證的Issuer
相符 (Entity
憑證除外)。 -
根憑證的
Subject
和Issuer
相同。 -
中繼憑證的
subject hash
與實體憑證的issuer hash
相符。 -
根憑證的
subject hash
與核發者憑證的issuer hash
相符。 -
根憑證中的
subject
和issuer hash
相同。
openssl x509 -hash -issuer_hash -noout -in certificate
其中 certificate 是憑證的名稱。
如果鏈結中的憑證符合這些規範,則我們將憑證鏈視為完整且有效。
透過雜湊序列驗證憑證鏈結的範例
以下範例是包含三個憑證的範例憑證鏈結的 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
在上述範例中,請注意下列事項:
透過上述範例,您可以確認範例憑證鏈結有效。
驗證憑證過期
本節說明如何使用下列方法,驗證鏈結中的所有憑證是否已過期:
- 取得憑證的開始和結束日期。
- 取得到期時間。
開始和結束日期
執行下列 OpenSSL 指令,取得鏈結中每個憑證的開始和結束日期從 entity
到 root
,並確認鏈結中的所有憑證均已生效 (開始日期早於今天),且尚未過期。
透過開始與結束日期驗證憑證到期驗證的範例
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
檢查憑證是否已過期:
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
」訊息表示憑證尚未過期。