You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部分Windows机器无法创建SSL/TLS安全通道连接HTTPS服务器

问题分析与解决方案建议

核心问题

约1%的Windows用户无法通过PowerShell(如wget命令)、脚本或代码(HttpWebRequest/HttpClient)连接HTTPS服务器https://notasolutions.com/qlm/qlmservice.asmx,报错:

The request was aborted: Could not create SSL/TLS secure channel / IllegalMessage

但用户机器上的浏览器(含IE模式Edge)、BITS服务可正常访问该地址;启用Fiddler的HTTPS解密后连接恢复正常,未解密状态下的TLS握手流程显示异常。

已完成的排查操作

  • 启用SchUseStrongCrypto注册表项
  • 修改SystemDefaultTlsVersions相关配置
  • 检查SCHannel组件的注册表配置
  • 调整inetcpl.cpl中的安全选项
  • 确认Get-TlsCipherSuite输出的本地加密套件列表与服务器支持的套件一致

针对性解决建议

1. 显式指定TLS版本与加密套件(脚本/代码层面)

部分Windows环境中,.NET或PowerShell的默认TLS协商逻辑与浏览器存在差异,可在代码或脚本中强制指定支持的TLS版本及服务器兼容的加密套件:

  • PowerShell示例:
# 强制启用TLS1.2和TLS1.3
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls13
# 可选:指定服务器明确支持的加密套件
[Net.ServicePointManager]::CipherSuitesPolicy = New-Object System.Net.Security.CipherSuitesPolicy(@(
    "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
    "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
))
# 执行请求
wget https://notasolutions.com/qlm/qlmservice.asmx
  • .NET代码示例(HttpClient):
var handler = new HttpClientHandler();
// 指定TLS版本
handler.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls13;
// 指定加密套件
handler.CipherSuitesPolicy = new CipherSuitesPolicy(new List<TlsCipherSuite>
{
    TlsCipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
    TlsCipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
});
using var client = new HttpClient(handler);
var response = await client.GetAsync("https://notasolutions.com/qlm/qlmservice.asmx");

2. 排查代理自动配置(PAC)异常

浏览器和BITS服务可能会自动加载PAC脚本,但PowerShell/.NET默认可能未正确读取PAC配置,导致握手路径异常:

  • 临时禁用系统代理,测试连接是否恢复
  • 手动将PAC脚本地址注入PowerShell环境变量:
$env:HTTP_PROXY = "http://你的PAC脚本地址/proxy.pac"
$env:HTTPS_PROXY = "http://你的PAC脚本地址/proxy.pac"

3. 检查SCHannel的硬ening策略

部分Windows安全补丁(如KB5014754)会启用SCHannel的硬ening规则,可能导致非浏览器客户端握手失败:

  • 检查注册表HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman下的ClientMinKeyBitLength值,确保该值不高于服务器DH密钥长度(建议设置为2048)
  • 检查HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols下是否存在禁用TLS1.2/1.3的子项,如有则删除

4. 验证证书链完整性

浏览器会自动补充缺失的中间证书,但PowerShell/.NET依赖系统证书存储的完整证书链:

  • 让受影响用户导出浏览器中该网站的完整证书链(含根证书、中间证书),导入到本地Trusted Root Certification Authorities和Intermediate Certification Authorities存储
  • 使用certutil -verifyurl https://notasolutions.com/qlm/qlmservice.asmx命令验证证书链是否完整

5. 捕获SCHannel握手日志定位细节

让受影响用户启用SCHannel日志,获取具体握手失败环节:

  1. 在注册表中添加HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\EventLogging,设置值为7(记录全部日志)
  2. 重启机器后复现问题,查看事件查看器Windows Logs\System下的SCHannel事件(事件ID 36887/36888)
  3. 根据日志中的错误代码(如0x80090326对应非法消息)定位具体原因

临时过渡方案

目前改用HTTP可临时解决问题,但不符合安全要求,建议优先为受影响用户推送上述脚本/配置修改,逐步切换回HTTPS。

内容的提问来源于stack exchange,提问作者Echtelion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 00:47:30