[研究]傳送要求時發生錯誤。基礎連接已關閉: 無法為 SSL/TLS 安全通道建立信任關係。
2025-11-10
環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19
"傳送要求時發生錯誤。基礎連接已關閉: 無法為 SSL/TLS 安全通道建立信任關係。"
Elmah 通知信:根據驗證程序,遠端憑證是無效的。
System.Security.Authentication.AuthenticationException: 根據驗證程序,遠端憑證是無效的。
********************************************************************************
方法一:全域忽略 Global.asxa => Appplication_Start()
// 強制使用 TLS1.2/1.3
System.Net.ServicePointManager.SecurityProtocol =
System.Net.SecurityProtocolType.Tls12 |
System.Net.SecurityProtocolType.Tls13;
// 忽略憑證錯誤
System.Net.ServicePointManager.ServerCertificateValidationCallback =
(s, certificate, chain, sslPolicyErrors) => true;
|
********************************************************************************
方法二:只對 HttpClient 忽略憑證
var handler = new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};
using (var httpClient = new HttpClient(handler))
{
var response = await httpClient.PostAsync(WS_URL + "/rest/verify", requestBody);
var json = await response.Content.ReadAsStringAsync();
// 處理 JSON ...
}
|
方法一較通用,方法二只能用於 HttpClient 元件,雖較安全,對不同 微軟或 3rd Party 套件/元件 有不同寫法,要花時間而研究。
********************************************************************************
方法三:匯入 Rest API Server 的 HTTPS 伺服器憑證公鑰 (每次對方更新,己方要下載更新)
下圖,如果被匯入的電腦沒有根憑證、中繼憑證,請匯入憑證鍊結。不確定也可用這種。
********************************************************************************
方法四:檢查 Rest API Server 的 HTTPS 伺服器憑證是否過期?本機上、WAF上是否都有更新。
********************************************************************************
(完)
相關





沒有留言:
張貼留言