您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
問題
用戶端應用程式會取得 503 Service Unavailable
的 HTTP 狀態碼,以及錯誤代碼 messaging.adaptors.http.flow.SslHandshakeFailed
做為 API 呼叫的回應。
錯誤訊息
用戶端應用程式會取得以下回應代碼:
HTTP/1.1 503 Service Unavailable
此外,您可能會遇到以下錯誤訊息:
{ "fault":{ "faultstring":"SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target", "detail":{ "errorcode":"messaging.adaptors.http.flow.SslHandshakeFailed" } } }
可能原因
由於 Apigee Edge 的訊息處理器與後端伺服器之間的 SSL 握手程序發生錯誤,因此您可能會收到狀態碼 503 Service Unavailable
和錯誤代碼 messaging.adaptors.http.flow.SslHandshakeFailed
。faultstring
中的錯誤訊息通常表示引發此錯誤的可能原因。
根據在 faultstring
中觀察的錯誤訊息,您必須使用適當技巧排解問題。本教戰手冊說明如何在 faultstring
中看見 SSL Handshake failed
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target
錯誤訊息時,如何排解這個錯誤。
當 Apigee Edge 的訊息處理器與後端伺服器之間進行 SSL 握手程序時,會發生這個錯誤:
- 如果 Apigee Edge 訊息處理器的 truststore:
- 所含憑證鏈結與後端伺服器的完整憑證鏈結不符。或
- 不含後端伺服器的完整憑證鏈結
- 如果後端伺服器提供的憑證鏈結:
- 含有 完整網域名稱 (FQDN),與目標端點中指定的主機名稱不符
- 含有不正確或不完整的憑證鏈結
這個問題可能的原因如下:
原因 | 說明 | 適用的疑難排解指示 |
---|---|---|
郵件處理者信任儲存庫中的憑證或憑證鏈結有誤/不完整 | 儲存在 Apigee Edge 訊息處理器信任儲存庫中的憑證和/或其鏈結,與後端伺服器的憑證鏈結不相符,或是不含後端伺服器的完整憑證鏈。 | 邊緣私有雲和公有雲使用者 |
後端伺服器憑證中的 FQDN 與目標端點中的主機名稱不符 | 後端伺服器提供的憑證含有的 FQDN 與目標端點中指定的主機名稱不符。 | 邊緣私有雲和公有雲使用者 |
後端伺服器提供的憑證或憑證鏈結不完整/不完整 | 後端伺服器提供的憑證鏈結不正確或不完整。 | 邊緣私有雲和公有雲使用者 |
常見診斷步驟
請使用下列其中一種工具/技巧診斷這項錯誤:
API Monitoring
程序 #1:使用 API 監控功能
如何使用 API Monitoring 診斷錯誤:
- 以 適當角色的使用者 登入 Apigee Edge UI。
切換至您想要調查問題的機構。
- 前往「分析」>「API 監控」>「調查」頁面。
- 請選取你發現錯誤的特定時間範圍。
將「Fault Code」與「Time」進行比較。
選取含有錯誤代碼
messaging.adaptors.http.flow.SslHandshakeFailed
的儲存格,如下所示:( 查看較大圖片)。
錯誤代碼
messaging.adaptors.http.flow.SslHandshakeFailed
的相關資訊如下所示:( 查看較大圖片)。
按一下「查看記錄」 ,然後展開失敗要求的資料列。
( 查看較大圖片)。
- 在「記錄檔」視窗中記下下列詳細資料:
- 要求郵件 ID
- 狀態碼:
503
- Fault 資料來源:
target
- 錯誤代碼:
messaging.adaptors.http.flow.SslHandshakeFailed
追蹤記錄
程序 2:使用追蹤工具
如何使用追蹤工具診斷錯誤:
- 啟用追蹤工作階段,並採取下列任一做法:
- 等待發生錯誤代碼
messaging.adaptors.http.flow.SslHandshakeFailed
的503 Service Unavailable
錯誤,或 - 如果可以重現問題,請透過 API 呼叫來重現問題
503 Service Unavailable
- 等待發生錯誤代碼
確保已啟用「Show all FlowInfos」:
- 請選取其中一個失敗的要求,然後檢查追蹤記錄。
- 瀏覽追蹤記錄的不同階段,找出發生錯誤的位置。
您會在「目標要求流程」開始階段之後看到錯誤,如下所示:
( 查看較大圖片)。
- 記下追蹤記錄中的下列值:
- 錯誤:
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
- error.cause:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
- error.class:
com.apigee.errors.http.server.ServiceUnavailableException
- 錯誤
SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
值表示 Apigee Edge 的訊息處理者無法驗證後端伺服器的憑證,因此 SSL 握手失敗。
- 錯誤:
- 前往追蹤記錄中的「AX」(Analytics (分析) 已記錄) 階段,然後按一下該階段。
向下捲動至「階段詳細資料錯誤標頭」區段,確定 X-Apigee-fault-code 和 X-Apigee-fault-source 及 X-Apigee-Message-ID 的值如下:
( 查看較大圖片)。
- 記下 X-Apigee-fault-code、X-Apigee-fault-source 和 X-Apigee-Message-ID 的值:
錯誤標頭 | 值 |
---|---|
X-Apigee-fault-code | messaging.adaptors.http.flow.SslHandshakeFailed |
X-Apigee-fault-source | target |
X-Apigee-Message-ID | MESSAGE_ID |
NGINX
程序 3:使用 NGINX 存取記錄檔
如何使用 NGINX 存取記錄檔診斷錯誤:
- 如果您是 Private Cloud 使用者,即可使用 NGINX 存取記錄檔來判斷 HTTP
503 Service Unavailable
的重要資訊。 查看 NGINX 存取記錄檔:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- 搜尋特定期間內 (問題過去是否發生),或是否有任何要求仍為
503
失敗,且錯誤代碼為messaging.adaptors.http.flow.SslHandshakeFailed
。503
如果發現 X-Apigee-fault-code 與
messaging.adaptors.http.flow.SslHandshakeFailed
值相符的任何503
錯誤,請判斷 X-Apigee-fault-source 的值。NGINX 存取記錄中的 503 錯誤示例:
( 查看較大圖片)。
上述 NGINX 存取記錄範例中的「X-Apigee-fault-code」X-Apigee-fault-code 和「X-Apigee-fault-source」X-Apigee-fault-code 值有下列值:
標頭 值 X-Apigee-fault-code messaging.adaptors.http.flow.SslHandshakeFailed
X-Apigee-fault-source target
訊息處理器記錄
程序 #4:使用訊息處理器記錄
- 請按照常見診斷步驟的說明,使用 API 監控、追蹤工具或 NGINX 存取記錄檔,找出其中一個失敗要求的訊息 ID。
在訊息處理器記錄檔 (
/opt/apigee/var/log/edge-message-processor/logs/system.log
) 中搜尋特定要求訊息 ID。您可能會注意到下列錯誤:org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1
NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context.handshakeFailed() : SSLClientChannel[Connected: Remote:X.X.X.X:443 Local:192.168.194.140:55102]@64596 useCount=1 bytesRead=0 bytesWritten=0 age=233ms lastIO=233ms isOpen=true handshake failed, message: General SSLEngine problem上述錯誤表示訊息處理器與後端伺服器之間的 SSL 握手失敗。
然後是具有詳細堆疊追蹤的例外狀況,如下所示:
org:myorg env:test api:MyProxy rev:1
messageid:myorg-28247-3541813-1
NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onException() : RequestWriteListener.onException(HTTPRequest@1522922c) javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1478) at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535) ... <snipped> Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Alerts.getSSLException(Alerts.java:203) at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1728) ... <snipped>Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397) at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302) ... <snipped>請注意,握手失敗的原因如下:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
這表示 Apigee Edge 的訊息處理器無法驗證後端伺服器的憑證,因此 SSL 握手失敗。
原因:郵件處理者信任儲存庫中的憑證或憑證鏈結有誤/不完整
診斷
- 使用 API 監控、追蹤工具或 NGINX 存取記錄檔,按照常見診斷步驟說明,找出錯誤的「Fault Code」、「Fault Source」。
- 如果「Fault Code」為
messaging.adaptors.http.flow.SslHandshakeFailed
,請使用下列任一方法判斷錯誤訊息: - 使用追蹤記錄工具找出 error.cause,相關說明請參閱常見診斷步驟
- 請使用郵件處理器記錄找出例外狀況,詳情請參閱常見診斷步驟
- 請在 API 呼叫的錯誤回應中,找出
faultstring
,如「錯誤訊息」一節所示 - 如果錯誤訊息為
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
,表示 Apigee Edge 的訊息處理器無法驗證後端伺服器憑證,因此 SSL 握手失敗。
您可以分兩階段對這個問題進行偵錯:
- 第 1 階段:決定後端伺服器的憑證鏈
- 第 2 階段:比較儲存在郵件處理器信任儲存庫中的憑證鏈結
第 1 階段
第 1 階段:決定後端伺服器的憑證鏈
請使用下列其中一種方法確定後端伺服器的憑證鏈:
openssl
對後端伺服器的主機名稱執行 openssl
指令,如下所示:
openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT#
請注意上述指令輸出內容中的憑證鏈結:
openssl 指令輸出內容的後端伺服器憑證鏈結範例:
Certificate chain 0 s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 2 s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
tcpdump
- 如果您是公開雲端使用者,請在後端伺服器上擷取 TCP/IP 封包。
- 如果您是私人 Cloud 使用者,可以在後端伺服器或訊息處理器中擷取 TCP/IP 封包。建議您在後端伺服器上解密封包,因此建議在後端伺服器擷取這些資料。
使用以下的 tcpdump 指令擷取 TCP/IP 封包:
tcpdump -i any -s 0 host IP_ADDRESS -w FILE_NAME
您可以使用您熟悉的 Wireshark 工具或類似工具分析 TCP/IP 封包。
Tcpdump 分析範例
( 查看較大圖片)。
- 封包 #43:訊息處理器 (來源) 將
Client Hello
訊息傳送至後端伺服器 (目的地)。 - 封包 #44:後端伺服器會確認收到來自訊息處理器的
Client Hello
訊息。 - 封包 #45:後端伺服器傳送
Server Hello
訊息及其憑證。 - 封包 #46:訊息處理者確認收到
Server Hello
訊息和憑證。 封包 #47:訊息處理器傳送
FIN, ACK
訊息,後面接著 Packet #48 中的RST, ACK
。這表示訊息處理器的後端伺服器憑證驗證失敗。這是因為訊息處理器沒有與後端伺服器憑證相符的憑證,或是無法信任後端伺服器的憑證與其 (訊息處理者) 信任存放區中的憑證。
您可以返回並檢查封包 #45 來判斷後端伺服器傳送的憑證鏈結
( 查看較大圖片)。
- 在本範例中,您可以看到伺服器傳送了含有
common name (CN) = mocktarget.apigee.net
的分葉憑證,後接CN= GTS CA 1D4
的中繼憑證以及包含CN = GTX Root R1
的根憑證。
如果您確定伺服器的認證驗證失敗,請參見第 2 階段:比較儲存在訊息處理器信任儲存庫中的後端伺服器憑證和憑證。
- 封包 #43:訊息處理器 (來源) 將
第 2 階段
第 2 階段:比較儲存在訊息處理器信任儲存庫中的後端伺服器憑證和憑證
- 決定後端伺服器的憑證鏈結。
- 請按照下列步驟,判斷儲存在訊息處理器信任儲存庫中的憑證:
從
TargetEndpoint
的SSLInfo
區段,從TrustStore
元素取得信任儲存庫參照名稱。以下是
TargetEndpoint
設定中的SSLInfo
部分範例:<TargetEndpoint name="default"> ... <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeystoreRef</KeyStore> <KeyAlias>myKey</KeyAlias> <TrustStore> ref://myCompanyTrustStoreRef </TrustStore> </SSLInfo> </HTTPTargetConnection> ... </TargetEndpoint>
- 在上述範例中,
TrustStore
參照名稱為myCompanyTruststoreRef
。 在 Edge UI 中,依序選取「Environments」>「References」。記下特定信任儲存庫參考資料中的「參考資料」欄中的名稱。這會是您的信任儲存庫名稱。
( 查看較大圖片)。
在上述範例中,信任儲存庫的名稱為:
myCompanyTruststoreRef:
myCompanyTruststore
使用以下 API 取得儲存在信任儲存庫中的憑證 (於上一步決定):
取得 KeyStore 或 Truststore 的所有憑證。這個 API 會列出特定信任儲存庫中的所有憑證。
公有雲使用者:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
Private Cloud 使用者:
curl -v -X GET http://MANAGEMENT_HOST:PORT_#/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs -H "Authorization: Bearer $TOKEN"
地點:
- ORGANIZATION_NAME 是機構名稱
- ENVIRONMENT_NAME 是環境的名稱。
- KEYSTORE_NAME 是 KeyStore 名稱
- $TOKEN 已設為您的 OAuth 2.0 存取權杖,如取得 OAuth 2.0 存取權杖一節中所述
- 本範例中使用的
curl
選項相關說明請參閱「使用 curl」
輸出內容範例:
範例信任儲存庫
myCompanyTruststore
中的憑證如下:[ "serverCert" ]
-
從 KeyStore 或 Truststore 取得特定憑證的認證詳細資料。這個 API 會傳回特定信任儲存庫中特定憑證的相關資訊。
公有雲使用者:
curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs/CERT_NAME -H "Authorization: Bearer $TOKEN"
Private Cloud 使用者
curl -v -X GET http://MANAGEMENT_HOST:PORT_#>/v1/organizations/ORGANIZATION_NAME/environments/ENVIRONMENT_NAME/keystores/KEYSTORE_NAME/certs/CERT_NAME -H "Authorization: Bearer $TOKEN"
地點:
- ORGANIZATION_NAME 是機構名稱
- ENVIRONMENT_NAME 是環境的名稱。
- KEYSTORE_NAME 是 KeyStore 名稱
- CERT_NAME 是憑證的名稱
- $TOKEN 已設為您的 OAuth 2.0 存取權杖,如取得 OAuth 2.0 存取權杖一節中所述
- 本範例中使用的
curl
選項相關說明請參閱「使用 curl」
輸出內容範例
serverCert
的詳細資料會顯示下列主體和核發者:節能綠葉/實體憑證:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
中繼憑證:
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
驗證步驟 1 中取得的實際伺服器憑證,以及與步驟 3 中取得的信任儲存庫中儲存的憑證是否相符。如果兩者不相符,則就是問題原因。
如上例所示,我們一次來看看一個憑證:
- 分葉憑證:
從後端伺服器:
s:/CN=mocktarget.apigee.net i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4
透過郵件處理器 (用戶端) 的信任儲存庫:
"subject": "CN=mocktarget.apigee.net", "issuer": "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US",
儲存在信任儲存庫中的分葉憑證與後端伺服器相符。
- 中繼憑證:
從後端伺服器:
s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
透過郵件處理器 (用戶端) 的信任儲存庫:
"subject" : "CN=GTS CA 1D4, O=Google Trust Services LLC, C=US", "issuer" : "CN=GTS Root R1, O=Google Trust Services LLC, C=US",
儲存在信任儲存庫中的中繼憑證與後端伺服器相符。
- 根憑證:
從後端伺服器:
s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1
訊息處理器的信任儲存庫中完全缺少根憑證。
由於信任儲存庫中缺少根憑證,訊息處理工具會擲回以下例外狀況:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
並將包含錯誤代碼
messaging.adaptors.http.flow.SslHandshakeFailed
的503 Service Unavailable
傳回用戶端應用程式。
- 分葉憑證:
解析度
- 確認您具有適當且完整的後端伺服器憑證鏈結。
- 如果您是公用雲端使用者,請按照「 更新雲端的 TLS 憑證」一文中的操作說明,將憑證更新為 Apigee Edge 的訊息處理器信任儲存庫。
- 如果您是 Private Cloud 使用者,請按照「 更新私有雲的 TLS 憑證」一文中的操作說明,將憑證更新為 Apigee Edge 的訊息處理器信任儲存庫。
原因:後端伺服器憑證中的 FQDN 與目標端點中的主機名稱不相符
如果後端伺服器提供的憑證鏈結含有 FQDN,但該鏈結與目標端點中指定的主機名稱不符,則 Apigee Edge 的訊息程序會傳回 SSL Handshake failed sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification
path to requested target
錯誤。
診斷
- 檢查您在 API Proxy 中觀察這個錯誤的特定目標端點,並記下後端伺服器的主機名稱:
TargetEndpoint 範例:
<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.company.com/resource</URL> </HTTPTargetConnection> </TargetEndpoint>
在上述範例中,後端伺服器的主機名稱為
backend.company.com
。 使用
openssl
指令確定後端伺服器憑證中的 FQDN,如下所示:openssl s_client -connect BACKEND_SERVER_HOST_NAME>:PORT_#>
例如:
openssl s_client -connect backend.company.com:443
檢查
Certificate chain
區段,並記下分葉憑證主體中指定為 CN 一部分的 FQDN。Certificate chain 0 s:/
CN=backend.apigee.net
i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 2 s:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1在上述範例中,後端伺服器的 FQDN 為
backend.apigee.net
。- 如果從步驟 1 取得的後端伺服器的主機名稱與步驟 2 不符,就表示發生錯誤。
- 在上述範例中,目標端點的主機名稱為
backend.company.com
。不過,後端伺服器憑證中的 FQDN 名稱為backend.apigee.net
。由於兩者不相符,系統會顯示這則錯誤訊息。
解析度
如要修正這個問題,請使用下列其中一種方法:
正確 FQDN
使用正確的 FQDN、有效且完整的憑證鏈,更新後端伺服器的 KeyStore:
- 如果您沒有具有正確 FQDN 的後端伺服器憑證,請透過適當的 CA (憑證授權單位) 取得適當的憑證。
- 當您在分葉或實體憑證中,取得有效且完整的憑證鏈結,且包含正確的後端伺服器 FQDN 與目標端點中指定的主機名稱相同時,請將後端的 KeyStore 更新為完整的憑證鏈。
正確的後端伺服器
使用正確的後端伺服器的主機名稱更新目標端點:
- 如果在目標端點中指定的主機名稱不正確,請更新目標端點,使其的主機名稱與後端伺服器憑證中的 FQDN 相符。
儲存對 API Proxy 所做的變更。
在上述範例中,若指定錯誤的後端伺服器主機名稱,您可以使用後端伺服器憑證 (即
backend.apigee.net
) 中的 FQDN 進行修正,如下所示:<TargetEndpoint name="default"> … <HTTPTargetConnection> <Properties /> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://backend.apigee.net/resource</URL> </HTTPTargetConnection> </TargetEndpoint>
原因:後端伺服器提供的憑證或憑證鏈結不正確/不完整
診斷
- 對後端伺服器的主機名稱執行
openssl
指令,即可取得後端伺服器的憑證鏈結,如下所示:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
記下上述指令輸出內容中的
Certificate chain
。openssl 指令輸出內容的後端伺服器憑證鏈結範例:
Certificate chain 0 s:/
CN=mocktarget.apigee.net
i:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 1 s:/C=US/O=Google Trust Services LLC/CN=GTS CA 1D4 i:/C=US/O=Google Trust Services LLC/CN=GTS Root R1 - 確認您的憑證鏈結正確且完整,如驗證憑證鏈結中所述。
如果您沒有後端伺服器的有效憑證鏈結,就是這個問題的原因。
在上方顯示的範例後端伺服器憑證鏈中,缺少根憑證。因此,您會收到這則錯誤訊息。
解析度
使用有效且完整的憑證鏈結更新後端伺服器的 KeyStore:
- 請在後端伺服器的 KeyStore 中更新有效且完整的憑證鏈。
如果問題仍未解決,請前往「 必須收集診斷資訊」。
必須收集診斷資訊
如果按照上述指示操作後仍無法解決問題,請收集下列診斷資訊,並與 Apigee Edge 支援團隊聯絡:
- 如果您是公開雲端使用者,請提供下列資訊:
- 機構組織名稱
- 環境名稱
- API Proxy 名稱
- 完成
curl
指令即可重現錯誤 - 顯示錯誤的追蹤檔
openssl
指令的輸出內容:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
- 後端伺服器擷取的 TCP/IP 封包
- 如果您是 Private Cloud 使用者,請提供下列資訊:
- 偵測到完整錯誤訊息
- API Proxy 套裝組合
- 顯示錯誤的追蹤檔
- 訊息處理器記錄
/opt/apigee/var/log/edge-message-processor/logs/system.log
openssl
指令的輸出內容:openssl s_client -connect BACKEND_SERVER_HOST_NAME:PORT_#
- 後端伺服器或訊息處理器上擷取的 TCP/IP 封包。
- 「 取得 KeyStore 或 Truststore 的所有憑證」 API 的輸出內容,以及使用 從 KeyStore 或 Truststore API 取得的每個憑證詳細資料。