无法使用MSXML2.ServerXMLHTTP通过HTTPS连接到使用SHA2证书的服务器

时间:2015-01-23 16:26:26

标签: ssl asp-classic windows-server-2003 msxml serverxmlhttp

我们将SSL证书更新为SHA2,但中间证书为SHA1。 Chrome和其他浏览器已经确定整个链必须是SHA2。我们的客户在关注地址栏中的黄色警告。有传言称,在几个月内,Chrome和其他浏览器将以停止屏幕取代轻度不引人注目的谨慎。我们当然不希望这样!

...

所以我们重新颁发了证书,新的证书由SHA2中间人签名。当我们使用该证书加密我们服务器上的流量时,我们使用MSXML2.ServerXMLHTTP(在Windows Server 2003上运行)访问该服务器上的远程Web服务的应用程序无法再连接。

经过研究,我们应用了这两个看似可能解决问题的修补程序:

https://support.microsoft.com/kb/938397/en-us https://support.microsoft.com/kb/968730/en-us

但问题仍然存在。使用SHA1中间件将证书切换回SHA2,我们没有问题。

我们已在受信任的商店中安装了中间SHA2证书,但问题仍然存在。

我们已尝试指定所有版本的MSXML2.ServerXMLHTTP,但都失败了。

ASP代码:

function query(xml)

    dim xmlhttp, xmlDoc, url

    url = application("component_url")

    set xmlhttp = server.createobject("MSXML2.ServerXMLHttp")
    call xmlhttp.open ("POST", url, false)
    call xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")

    on error resume next
        err.clear   

        call xmlhttp.send(xml)

        if err.number <> 0 then
            call sendAlert("An error has occurred while trying to send your request", message)
        else
            dim rt
            rt = ConvertUtf8BytesToString(xmlhttp.responseBody)
            set xmlDoc = server.createobject("MSXML2.DomDocument")          
            xmlDoc.loadXml(rt)
        end if
    on error goto 0

    set query = xmlDoc
    set xmlHttp = nothing
    set xmlDoc = nothing
end function

1 个答案:

答案 0 :(得分:3)

您的情况很可能与此post相同,特别是您提到脚本已运行10年以上的最后一个答案。

完整地引用最后一个答案:

  

我知道这是一个老问题。这个问题可能是因为   不受支持的密码套件。尝试添加 - TLS_RSA_WITH_AES_128_CBC_SHA   AES128-SHA - TLS_RSA_WITH_AES_256_CBC_SHA AES256-SHA

     

这意味着你必须遵循这个kb:   http://support.microsoft.com/kb/948963此更新也很有趣   如果您仍在使用Windows 2003.这将允许连接到   站点使用SHA2 - http://support.microsoft.com/kb/968730

     

请注意,Windows Server 2003支持将于2015年7月14日结束

如果代码在Windows Server 2003上运行,我建议您在较新的计算机上试用,也可以使用Windows 7进行快速测试。