经典ASP TLS 1.2问题

时间:2018-03-26 17:15:28

标签: asp-classic

我正在使用我继承的经典asp脚本。我正在尝试与TLS 1.2连接,但我遇到了问题。当我尝试运行以下内容时出现500错误:

<%

Const   WinHttpRequestOption_SecureProtocols = 9
Const   SecureProtocol_SSL2 = 8, SecureProtocol_SSL3 = 32, _
        SecureProtocol_TLS1 = 128, SecureProtocol_TLS1_1 = 512, _
        SecureProtocol_TLS1_2 = 2048

Set objHttp = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")

objHttp.option(9) = 128
objHttp.open "GET", "https://howsmyssl.com/a/check", false
objHttp.Send
Response.Write objHttp.responseText 
Set objHttp = Nothing 
%>

如果我取消选项(9),它运行正常,但不通过TLS 1.2连接。服务器注册表已更新,并且通过SSL实验室(https://www.ssllabs.com/ssltest/index.html)检查服务器显示服务器已全部设置为TLS 1.2。

这是在Windows 2008 Server(不是R2)上。关于如何运行TLS 1.2的任何想法?

1 个答案:

答案 0 :(得分:1)

Windows 2008 / Vista上的WinHttp不支持TLS 1.1或TLS 1.2。如果我在Visual Studio中使用对象浏览器从Windows 2008计算机检查winhttp.dll,您将在下面的屏幕截图中注意到WinHttpRequestSecureProtocols枚举没有SecureProtocol_TLS1_1SecureProtocol_TLS_1_2

enter image description here

将此与Windows 10计算机进行比较:

enter image description here

KB3140245允许将注册表更改为默认WinHttp到TLS 1.1和/或TLS 1.2,这样做可以解决无法以编程方式设置TLS 1.1或TLS 1.2的问题,但Windows没有更新2008年,仅限Windows 2008 R2及更高版本。 Windows Server 2016本机支持此功能,因此我建议尽可能更新到Server 2016。