【App Services】App Service報錯遠程證書無效 - "The remote certificate is invalid according to the validation procedure"
問題描述
在開發環境中部署的新應用(App Service)無法與 Salesforce 的遠程端點建立 SSL/TLS 連接,報錯信息如下:
"The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel." "The remote certificate is invalid according to the validation procedure."
問題解答
通過網絡抓包分析,三次握手(SYN、SYN-ACK、ACK)正常,Client Hello 和 Server Hello 也成功完成,但之后未見任何應用層數據交換。

使用 OpenSSL 工具從 Kudu 環境連接遠程端點時,返回的證書鏈中包含了一個由內部私有 CA(HealthPartners)簽發的中間證書,這是因為防火墻啟用了 SSL Inspection,并插入了證書。
openssl s_client -showcerts -connect xxxxx.mysaleforce.com:443

由于 App Service 無法驗證由私有 CA 簽發的證書,因此導致連接失敗。
解決方案
禁用防火墻的 SSL Inspection 功能,從而避免中間人證書插入,恢復了與遠程端點的正常 SSL 通信。
其他可選的辦法還有:
- 設置
WEBSITE_LOAD_ROOT_CERTIFICATES環境變量(僅適用于 ASE 或 Linux App Service)。 - 在代碼中臨時禁用 SSL 驗證(例如使用
ServerCertificateCustomValidationCallback),僅適用于測試環境。
參考資料
How to change Grails spring-security-ldap:2.0.1 plugin to use customised AuthoritiesPopulator? https://stackoverflow.com/questions/51297420/bypass-invalid-ssl-certificate-in-net-core
HttpClientHandler.DangerousAcceptAnyServerCertificateValidator Property (System.Net.Http) : https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclienthandler.dangerousacceptanyservercertificatevalidator?view=netcore-3.0
當在復雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 云中,恰是如此!

浙公網安備 33010602011771號