.NET Framework 4.7.2 Web API在IIS中mTLS请求失败:无法创建SSL/TLS安全通道
.NET Framework 4.7.2 Web API在IIS中调用mTLS第三方API失败
我有一个运行在IIS中的.NET Framework 4.7.2 ASP.NET Web API,尝试与要求客户端证书进行mTLS的第三方API交互。发送初始登录请求时出现错误:The request was aborted: Could not create SSL/TLS secure channel.,该异常无详细原因及内部异常。
仅当API运行在Windows 2022服务器(AWS EC2)的IIS中时才会报错,本地测试正常;将API代码复制到控制台程序并在同一服务器运行也无错误。
证书加载代码
using (var s3Client = new AmazonS3Client()) { var response = s3Client.GetObject(bucket, key); using (response.ResponseStream) using (var file = new MemoryStream()) { response.ResponseStream.CopyTo(file); cert = new X509Certificate2(file.ToArray(), certPassword); } }
证书使用代码
var httpClientHandler = new HttpClientHandler(); httpClientHandler.ClientCertificates.Add(cert); _httpClient = new HttpClient(httpClientHandler) { BaseAddress = _config.BaseUri };
抓包情况
通过Wireshark观察,会话直接中断:
- 成功场景(控制台程序):成功抓包截图
- 失败场景(ASP.NET Web API 2):失败抓包截图
已尝试的无效方案
- 添加所有与Windows启用TLSv1.2相关的注册表项
- 在代码中添加
ServicePointManager.SecurityProtocol = SecurityProtocolType.tls12 - 在代码中添加
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true - 确保Web.config中httpRuntime设置为4.7.2
所有尝试均无效,Wireshark显示已使用TLSv1.2。
内容的提问来源于stack exchange,提问作者Tanner King
相关产品推荐
相关产品推荐

