首先介绍一些背景信息。我有一个在 Windows Server 2003 SP2 32 位环境中运行的 SSIS 包。该包最近在使用 SSL 连接下载网页的脚本任务期间开始出现以下错误:
"The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
经过一番挖掘,我发现了一些事情:我无法使用服务器上的 IE8 访问该网站(我可以使用 Firefox),并且该网站刚刚颁发了新的 SHA256 证书。
经过一番研究,我目前的假设是问题在于我不支持此服务器上的 SHA2 证书。我从网站上获取了证书并运行,CertUtil -verify [cert file]
结果如下:
The signature of the certificate can not be verified. 0x80096004 (-2146869244)
我找到了微软提供的几个修补程序,据我了解,它们中的任何一个都应该可以启用对 SHA2 证书的支持:
因此我请求了 kb968730 的修补程序并尝试安装它,但出现以下错误:
The installation cannot continue because the following packages might not be valid:
KB2616676_V2 c:\windows\system32\dllcache\crypt32.dll 5.131.3790.4905
KB2616676_V2 c:\windows\system32\crypt32.dll 5.131.3790.4905
Reinstall the packages listed above, and then reinstall KB968730
此修补程序中包含的 crypt32 库的版本是 5.131.3790.4477,这解释了为什么安装程序无法继续。
此时我不太确定我需要做什么。kb968730 文章指出 crypt32.dll 是唯一通过修补程序更新的文件,这让我想到,既然我已经有了较新的版本,难道我不应该已经拥有此功能吗?但是,除非我弄错了问题的根本原因,否则似乎我没有。
答案1
Crypt32.dll 5.131.3790.5235 版本修复了此问题(重启后)。可从以下网址获取 http://support2.microsoft.com/kb/2868626
之前安装的版本是 5.131.3790.5014 版本,但并未修复此问题。根据此帖子(https://mendel129.wordpress.com/tag/crypt32-dll/),5014 版本有两个变体:一个来自 Windows 更新(KB2661254,不起作用),另一个作为 QFE(KB968730)。
答案2
通过安装可以解决此问题KB3072630,如果您启用了 Windows 更新,则会自动安装。更新后 Crypt32.dll 的版本号为 5.131.3790.5668。
KB938397 和 KB968730 已被弃用并由上述更新取代。
答案3
我也收到了这个错误。我将继续将证书安装到指定的服务器上并收到此错误。我的解决方案是,我必须继续在调用该特定证书的每台服务器上安装根/中间证书。这可能是因为我刚刚更新了我的内部 CA。
因此,如果有 X 个服务器调用该证书,则将其安装在这些服务器上。这解决了我的问题。