遺失或不受信任的憑證所導致的AEM SSL憑證驗證錯誤
當Adobe Experience Manager (AEM)執行階段、AEM信任存放區或本機開發環境不信任遠端伺服器憑證鏈時,()輸出HTTPS和mTLS連線會失敗。 當缺少必要的根或中間憑證、憑證鏈不完整、SSL攔截引入不受信任的憑證,或Java升級後信任關係變更時,會發生此問題。 若要解決此問題,請驗證憑證、更新信任存放區以及驗證連線。
說明 description
環境
Adobe Experience Manager as a Cloud Service (AEMaaCS)
問題/症狀
- 應用程式記錄檔顯示javax.net.ssl.SSLHandshakeException: PKIX路徑建置失敗,表示Java無法建置遠端端點的信任憑證路徑。
- 本機開發工具,例如aio CLI或節點擷取顯示
SELF_SIGNED_CERT_IN_CHAIN,表示SSL鏈結中存在不受信任的憑證。 - 在存取保全端點時,瀏覽器會顯示您的連線不是私人的,因為憑證鏈結不完整。
- 本機開發環境顯示無法取得本機簽發者憑證,這表示本機信任存放區不信任憑證鏈結。
- 即使金鑰存放區組態顯示正確,傳出mTLS呼叫也會失敗。
根本原因
發生此問題的原因是AEM或基礎Java執行階段不信任遠端伺服器憑證鏈。 缺少根或中間憑證授權單位、憑證上傳不完整、SSL檢查代理程式、Java信任存放區變更和本機SDK信任驗證失敗會阻礙成功的SSL交握驗證。
解決方法 resolution
請依照下列步驟來識別和解決SSL憑證信任問題:
- 檢閱AEM記錄檔、Cloud Manager CLI輸出、JVM棧疊追蹤或本機開發記錄檔,以識別憑證驗證錯誤,例如PKIX路徑建置失敗或SELF_SIGNED_CERT_IN_CHAIN。
- 執行
openssl s_client -showcerts -connect <host>:443以擷取遠端伺服器憑證鏈結,並確認鏈結中的所有憑證都已傳回。 - 透過識別問題是否由缺少憑證、鏈結不完整、SSL攔截、瀏覽器信任問題或本機開發信任驗證失敗所導致,來判斷失敗類別。
- 將遺失的根憑證和中間憑證新增至AEM信任存放區。 若為AEM as a Cloud Service,請透過全域信任存放區匯入憑證。 對於AMS或內部部署環境,請使用keytool將憑證匯入Java信任存放區。
- 當瀏覽器憑證警告指出鏈不完整時,上傳包含分葉、中間和根憑證的完整憑證鏈。
- 將所需的公司CA憑證新增至本機作業系統或Node.js信任存放區,以解決本機開發憑證問題。
- 在AMS或內部部署環境中進行信任存放區更新後,重新啟動AEM執行個體或Java程式,以便更新的憑證成功載入。
- 使用SSLPoke或應用程式層級API呼叫來驗證輸出連線,並驗證SSL交握不再發生失敗。
- 透過確認輸出連線成功、SSLHandshakeException錯誤不再出現在記錄中,以及憑證驗證成功完成來驗證解決方案。
何時上報
- 即使信任存放區包含必要的憑證,SSL交握失敗仍會繼續發生。
- 憑證鏈結似乎已完成,但輸出連線仍會失敗。
- 無法在該環境中驗證或信任SSL檢查或Proxy憑證。
- 在信任庫更新和連線驗證後,輸出SSL驗證仍舊失敗。
相關閱讀
recommendation-more-help
experience-cloud-kcs-help-kbarticles