查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
問題
用戶端應用程式收到訊息為 502
的 HTTP 回應代碼
Bad Gateway
做為 Edge Microgateway 中 API 呼叫的回應。
或者,管理員在執行self signed certificate in certificate
chain
edgemicro configure
指令。
錯誤訊息
用戶端會看到下列回應訊息:
HTTP/1.1 502 Bad Gateway
以下是兩個常見的錯誤回應範例:
{"message":"self signed certificate in certificate chain","code":"SELF_SIGNED_CERT_IN_CHAIN"}
{"message":"self signed certificate","code":"DEPTH_ZERO_SELF_SIGNED_CERT"}
或者,執行 edgemicro configure
時也可能會發生這個錯誤:
{ Error: self signed certificate in certificate chain at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34) at TLSSocket.emit (events.js:189:13) at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }
可能原因
原因 | 說明 | 適用的疑難排解操作說明 |
---|---|---|
目標伺服器提供自行簽署的憑證 | Edge Microgateway 會驗證目標伺服器的憑證,如果該憑證不信任 ,系統會引發執行階段錯誤 | 邊緣公有雲和私有雲使用者 |
Apigee Edge Management Server 使用自行簽署的憑證 | 首次設定 Edge Microgateway 時,邊緣閘道會連線至 Apigee Edge 啟用傳輸層安全標準 (TLS)。如果 Edge 提供自行簽署的憑證,這個憑證就會失敗。 | Edge Private Cloud 使用者 |
原因:目標伺服器提供自行簽署的憑證
如果 自行簽署的憑證會由目標伺服器 southbound 連線,Edge Microgateway 則會預設發生這項錯誤,因為 不信任自行簽署的憑證。
診斷
您可能會在記錄 (/var/tmp/edgemicro-`hostname`-
*.log
) 中觀察到以下錯誤:
2021-05-18T10:52:46.425Z [error][0:8000][1][gsc][test][edgemicro_badtargethost][][][2db53f80- b7c7-11eb-9abe-05b6297863f1][microgateway-core][][GET][502][self signed certificate in certificate chain][SELF_SIGNED_CERT_IN_CHAIN][]
錯誤代碼 SELF_SIGNED_CERT_IN_CHAIN
表示 Edge Microgateway
很有可能是從目標伺服器收到自行簽署的憑證。如要確認這一點,請執行
步驟如下:
- 執行下列
openssl
指令,驗證目標伺服器的 憑證鏈結:echo | openssl s_client -connect TARGET_SERVER_HOSTNAME:PORT -servername TARGET_SERVER_HOSTNAME | openssl x509 -noout
-
如果目標伺服器的憑證鏈結確實是自行簽署的憑證, 問題。
在以下範例中,請注意目標伺服器呈現自行簽署的憑證:
echo | openssl s_client -connect untrusted-root.badssl.com:443 -servername untrusted-root.badssl.com | openssl x509 -noout
depth=1 C = US, ST = California, L = San Francisco, O = BadSSL, CN = BadSSL Untrusted Root Certificate Authority verify error:num=19:self signed certificate in certificate chain verify return:0 DONE
解析度
- 與擁有目標伺服器的團隊合作,採購由 。
如果這個方法不可行,請考慮下列其中一種方式,允許自行簽署 憑證
選項 #1:設定系統屬性,允許 Edge Microgateway 信任所有 認證
- 如果要使用 docker 使用 Node.js 不信任的 CA
否則,請匯出名為
NODE_EXTRA_CA_CERTS
的環境變數, 並指向根憑證授權單位檔案這項資訊已記錄在官方 Node.js 網站。
方法 #2:設定 Edge Microgateway YAML 設定檔以信任該特定 目標伺服器的憑證
- 確認您已準備好目標伺服器的憑證 (或鏈結),格式為 PEM。目的地: 將其他憑證格式轉換為 PEM 憑證,請按照 將憑證轉換為支援的格式。
如果存在憑證鏈結,請確認憑證正確無誤 順序。分葉憑證應一律位於第一順位,其次是中階憑證 憑證和根憑證進一步說明 正在驗證憑證鏈結。
在以下範例中,我們已為
untrusted-root.badssl.com
。edgemicro: ... targets: - host: 'untrusted-root.badssl.com' ssl: client ca: /opt/apigee/certs/untrusted-root.pem
設定方法的操作說明也可以在 Edge Microgateway Module - 設定單向和雙向傳輸層安全標準 (TLS) 影片。 詳情請參閱 詳情請參閱在 Edge Microgateway 伺服器上設定 SSL 一文。
如果問題仍未解決,請前往 必須收集診斷資訊。
原因:Apigee Edge Management Server 使用自行簽署的憑證
首次設定 Edge Microgateway 時,您必須執行下列其中一項指令
為 edgemicro configure
或 edgemicro private configure
。這個指令
啟動叢集,然後叢集會聯絡 Apigee Edge 以下載必要資訊。
對 Edge Private Cloud 來說,管理伺服器網址取決於 -m
引數。
如果您已為管理伺服器啟用 TLS,Edge Microgateway 就會嘗試驗證
取得管理伺服器提供的憑證
Edge Private Cloud 的 edgemicro configure
指令範例如下:
edgemicro private configure -u <username> -p <password> -o apigee -e dev -v secure -r https://apigee-dev.net -m https://management.apigee-dev.net:8443
如果管理伺服器是以自行簽署的憑證設定, 。
{ Error: self signed certificate in certificate chain at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34) at TLSSocket.emit (events.js:189:13) at TLSSocket._finishInit (_tls_wrap.js:633:8) code: 'SELF_SIGNED_CERT_IN_CHAIN' }
診斷
- 在這種情況下,管理伺服器
(
management.apigee-dev.net
) 可能傳回自行簽署的 TLS 憑證 - Apigee Edge 系統管理員可能已提供憑證 擁有一份副本
- 否則,請執行下列指令來取得憑證的相關資訊:
echo | openssl s_client -connect management.apigee-dev.net:8443 -servername management.apigee-dev.net | openssl x509 -noout
- 如果管理伺服器擁有自行簽署的憑證,就是 問題。
解析度
- 與擁有目標伺服器的團隊合作,採購由 。
如果這個方法不可行,請按照下列步驟允許自行簽署 憑證
- 設定系統屬性,允許 Edge Microgateway 信任所有憑證。
- 如果要使用 docker 使用 Node.js 不信任的 CA。
- 否則,請匯出名為
NODE_EXTRA_CA_CERTS
的環境變數, 指向根憑證授權單位檔案 官方記錄了 Node.js 網站。
必須收集診斷資訊
如果按照上述說明操作後仍無法解決問題,請收集下列資訊 ,然後與 Apigee Edge 支援團隊聯絡:
- 記錄檔:預設資料夾為
/var/tmp
,但可能在以下位置遭到覆寫: 主config.yaml
檔案 (logging > dir parameter
)。是 建議先將log > level
變更為info
,再提供 記錄檔來匯出至 Apigee Edge 支援頁面。 - 設定檔:Edge Microgateway 的主要設定位於 YAML 中
該檔案位於預設 Edge Microgateway 資料夾中
$HOME/.edgemicro
。另有 名為default.yaml
的預設設定檔,以及每個環境各有一個 ORG-ENV-config.yaml
。上傳這個檔案 完整存取受影響的機構和環境參考文件