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

Windows Server 2008 R2上PowerShell无法创建SSL/TLS安全通道求助

解决方案:Windows Server 2008 R2上PowerShell调用HTTPS API失败问题

1. 强制指定TLS协议版本

尽管已启用全部安全协议,PowerShell仍可能未正确绑定到高版本TLS(Server 2008 R2原生不支持TLS 1.3,优先确保TLS 1.2生效),在脚本开头添加:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls

2. 检查证书存储与权限

POSTMAN默认使用当前用户证书存储,若脚本以系统账户运行(如任务计划),可能无法读取证书:

  • 将证书导入本地计算机的Personal或Trusted Root Certification Authorities存储(而非当前用户存储)
  • 给运行脚本的账户分配证书读取权限:
    1. 打开certlm.msc,找到目标证书
    2. 右键→所有任务→管理私钥
    3. 添加对应账户,授予读取权限

3. 临时禁用证书吊销检查(排查用)

Server 2008 R2可能存在CRL(证书吊销列表)访问受阻问题,临时关闭排查:

[System.Net.ServicePointManager]::CheckCertificateRevocationList = $false

注意:仅作排查手段,生产环境需恢复,若解决问题需检查防火墙是否阻止CRL地址访问。

4. 调整.NET Framework全局安全配置

编辑machine.config文件(路径:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config),添加/修改以下配置强制启用TLS 1.2:

<system.net>
  <settings>
    <securityProtocol type="System.Net.SecurityProtocolType">Tls12,Tls11,Tls</securityProtocol>
  </settings>
</system.net>

修改后重启PowerShell或相关服务生效。

5. 配置兼容的SSL密码套件

Server 2008 R2默认密码套件可能不匹配API服务器要求:

  1. 打开gpedit.msc,导航到计算机配置→管理模板→网络→SSL配置设置
  2. 启用SSL密码套件顺序,设置为TLS 1.2兼容的套件列表(例如:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256)
  3. 重启服务器生效

6. 验证脚本证书加载逻辑

确保脚本正确加载证书,示例:

# 从本地计算机存储加载证书
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Thumbprint -eq "你的证书指纹"}
# 或从PFX文件加载
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\证书路径\cert.pfx", "证书密码")

# 调用API时指定证书
Invoke-RestMethod -Uri "https://目标API地址" -Method Post -Certificate $cert -Body $请求体

内容的提问来源于stack exchange,提问作者André IT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:18:28