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

Windows Server 2016中PowerShell curl访问URL报WebCmdletWebResponseException

问题分析

Windows Server 2016 中的 PowerShell 默认依赖的 .NET Framework 版本(通常为4.x)未默认启用 TLS 1.2,尽管系统本身支持该协议。直接访问 S3 URL 正常,是因为 AWS S3 的 TLS 套件配置兼容旧系统的默认协议/套件组合;而你的 Nginx 反向代理可能配置了更严格的 TLS 套件,导致仅支持 TLS 1.0/1.1 的请求无法建立连接。

解决方案

1. 强制 PowerShell 使用 TLS 1.2

在执行 Invoke-WebRequest 前,先运行以下命令修改当前会话的安全协议:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

若需临时兼容其他协议(仅用于测试),可组合多个协议类型:

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

注意:该设置仅对当前 PowerShell 会话生效,若要永久生效,需修改注册表或组策略强制 .NET Framework 默认使用 TLS 1.2。

2. 调整 Nginx 的 TLS 套件配置

如果强制 TLS 1.2 后仍报错,需确认 Nginx 的 ssl_ciphers 配置是否包含 Windows Server 2016 支持的加密套件。建议配置兼容旧系统的套件组合,例如:

ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA;

修改后重启 Nginx 服务,再测试连接。

3. 验证 TLS 连接兼容性

使用以下命令测试域名的 TLS 1.2 连接情况:

# 测试端口连通性及 TLS 握手细节
Test-NetConnection -ComputerName your-domain.com -Port 443 -InformationLevel Detailed

若有 OpenSSL 工具,也可通过以下命令确认:

openssl s_client -connect your-domain.com:443 -tls1_2

若握手失败,说明 Nginx 端的 TLS 配置确实存在兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 02:25:15