SSIS脚本任务报错:无法创建SSL/TLS安全通道求助
Windows Server 2012上SSIS VB.Net脚本SSL/TLS连接失败解决方案
问题背景
Windows Server 2012服务器上运行5年的SSIS VB.Net脚本任务突然失效,无代码/配置变更,在response As WebResponse = webReq.GetResponse()处报错:The request was aborted: Could not create SSL/TLS secure channel。脚本用于下载政府农业保险网站公开数据,无需身份验证,同版本环境的另一台服务器可正常运行。
解决方案
1. 启用系统级TLS 1.2支持
Windows Server 2012默认未完全启用TLS 1.2客户端组件,需通过注册表配置:
- 打开注册表编辑器,定位到路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client- 若不存在
TLS 1.2或Client项,手动创建
- 若不存在
- 新建DWORD值
Enabled,赋值为1 - 新建DWORD值
DisabledByDefault,赋值为0 - 重启服务器使配置生效
2. 检查并更新根证书
目标网站的SSL证书依赖链可能在该服务器上存在缺失或过期:
- 用IE浏览器访问目标网站,点击地址栏证书图标,查看证书链是否完整
- 若有缺失的根证书,下载对应证书并安装到
本地计算机 > 受信任的根证书颁发机构
3. 升级.NET Framework及补丁
确保服务器上的.NET Framework版本支持TLS 1.2:
- 检查当前.NET Framework版本,推荐升级至4.6及以上
- 安装对应.NET版本的最新安全补丁,修复TLS兼容性问题
4. 修正脚本代码的WebRequest配置
原脚本存在webReq未初始化的问题,补充必要配置:
Public Sub Main() ' 启用全系列TLS协议 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12 ServicePointManager.Expect100Continue = True Dim remoteUri As String = "external website" Dim content = New MemoryStream() Try ' 初始化WebRequest对象并补充UserAgent(部分网站会验证) Dim webReq As HttpWebRequest = CType(WebRequest.Create(remoteUri), HttpWebRequest) webReq.UserAgent = "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" Using response As WebResponse = webReq.GetResponse() Using responseStream As Stream = response.GetResponseStream() responseStream.CopyTo(content) End Using End Using Catch e As Exception Console.WriteLine(e.Message) ' 建议补充详细错误日志便于排查 ' Console.WriteLine(e.ToString()) End Try End Sub
5. 排查防火墙与网络配置
- 直接在服务器上用
curl命令或浏览器访问目标网站,验证网络连通性 - 检查服务器防火墙出站规则,确保允许443端口的HTTPS请求
- 确认服务器代理配置正常(若使用代理)
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

