.NET Core 6应用部署至服务器/IIS后无法获取OpenID配置的SSL异常
.NET Core 6应用部署后无法连接IDS服务的SSL问题解决
问题场景
本地运行.NET Core 6应用时,与IDS服务连接正常;但部署至任意服务器或IIS后,出现SSL连接失败,无法获取OpenID配置文件的错误,具体表现为远程主机强迫关闭现有连接(SocketException 10054)。
错误详情
Category: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware EventId: 1 SpanId: 82ca2a5b19214ee8 TraceId: ac73c85bca4dc4f01a21491a71f562dc ParentId: 0000000000000000 RequestId: 80000acb-0002-eb00-b63f-84710c7967bb RequestPath: / 请求执行过程中发生未处理异常。 Exception: System.InvalidOperationException: IDX20803: 无法从以下地址获取配置: 'https://accounts.go-ally.com/.well-known/openid-configuration'。将在 '1/30/2024 9:42:30 AM +00:00' 重试。异常信息: 'System.IO.IOException: IDX20804: 无法从以下地址检索文档: 'https://accounts.go-ally.com/.well-known/openid-configuration'. ---> System.Net.Http.HttpRequestException: 无法建立SSL连接,请查看内部异常。 ---> System.IO.IOException: 无法从传输连接读取数据: 远程主机强迫关闭了一个现有的连接。 ---> System.Net.Sockets.SocketException (10054): 远程主机强迫关闭了一个现有的连接。 --- 内部异常堆栈跟踪结束 --- at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
可行解决方案
1. 强制指定TLS版本
服务器默认启用的TLS版本可能不被IDS服务支持,在Program.cs中添加代码强制使用TLS 1.2/1.3:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls13;
2. 验证服务器证书信任
- 确认服务器信任IDS服务的SSL证书根颁发机构,若为自签名证书,需导入至服务器的受信任根证书颁发机构存储(通过
certmgr.msc操作) - 仅测试环境可临时忽略证书错误(生产环境禁用):
var handler = new HttpClientHandler(); handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; var httpClient = new HttpClient(handler); // 将此HttpClient传入OpenID Connect配置逻辑
3. 检查网络与防火墙设置
- 确认服务器出站规则允许访问
accounts.go-ally.com的443端口 - 若服务器通过代理访问外网,在
appsettings.json中配置代理:
"HttpClient": { "Proxy": { "Address": "http://你的代理服务器地址:端口", "BypassOnLocal": true } }
4. 排查IDS服务访问限制
联系IDS服务管理员,确认服务器IP未被列入黑名单,且IDS服务允许该IP访问。
内容的提问来源于stack exchange,提问作者M Owais
相关产品推荐
相关产品推荐

