【问题标题】:Classic ASP TLS 1.2 issue经典 ASP TLS 1.2 问题
【发布时间】:2018-03-26 17:15:28
【问题描述】:

我正在使用我继承的经典 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 Labs (https://www.ssllabs.com/ssltest/index.html) 检查服务器显示服务器已全部设置为 TLS 1.2。

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

【问题讨论】:

  • 你确定TLS 1.2 is installed
  • 不是 100%。我知道当我在 SSL Labs 上运行测试时,它表明 TLS 1.2 有效,但我无法以编程方式使用它。如何确定?
  • 我认为 Windows 2008 没有太多选择,因为启用 TLS 1.1 和 TLS 1.2 支持 WinHttp 的补丁,KB3140245,仅适用于 Windows 2008 R2 及更高版本.
  • 我在服务器上运行了 TLS 1.2,我只是在经典 ASP 脚本中以编程方式访问它时遇到问题。这可能是某个地方的 IIS 设置吗?
  • 我们正在寻求关闭 TLS 1.1,然后使用来自 Windows Server 2016 服务器的 winhttp.dll 副本覆盖服务器上的 winhttp.dll,以查看这是否是临时修复...请注意,这是一台 2008 R2 机器...很快就会更新。

标签: asp-classic


【解决方案1】:

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

将此与 Windows 10 机器进行比较:

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

【讨论】:

  • 更新注册表后,是否需要重启机器才能生效?我尝试重新启动网站,但这还不够。
猜你喜欢
  • 2016-05-02
  • 1970-01-01
  • 2019-08-13
  • 2021-11-20
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 2017-09-25
  • 2018-10-17
相关资源
最近更新 更多