ssl - 选项 9/Win2008/Classic ASP 上的 WinHttp 错误

标签 ssl asp-classic windows-server-2008 winhttp

我要连接的服务器需要 TLS 1.1。我的尝试失败了。我在使用经典 ASP 的 Windows Server 2008 R2 Standard SP1 64 位计算机上。

这是我的代码:

const WinHttpRequestOption_SecureProtocols = 9

const SecureProtocol_TLS1_1 = 512

dim objHTTP

set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")

没有错误:

objHTTP.Option(9) = 128

'没有错误:

objHTTP.Option(9) = &H80

'错误就在这里:

objHTTP.Option(WinHttpRequestOption_SecureProtocols) = SecureProtocol_TLS1_1

'错误就在这里:

objHTTP.Option(9) = 512

'错误就在这里:

objHTTP.Option(9) = &H200

无论我将这一行放在代码的什么位置,我在尝试执行时仍然会遇到此错误:

Microsoft VBScript 运行时错误“800a0005”

Invalid procedure call or argument: 'Option'

我的服务器浏览器是IE8,所以我安装了IE11希望能有更好的效果。同样的错误。

我把IE11的Internet选项设置为

  • (未选中)使用 SSL 2.0
  • (未选中)使用 SSL 3.0
  • (未选中)使用 TLS 1.0
  • (选中)使用 TLS 1.1
  • (选中)使用 TLS 1.2

在注册表中:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\

我将 TLS 1.1 和 1.2 设置为 enabled=1DisabledByDefault=0

其余的都设置在对面。

我在 /ControlSet001//ControlSet002/ 做了同样的事情

为什么我不能设置 objHTTP.Option(9) = 512
奖励问题:为什么 WinHttp 坚持使用 TLS 1.0 而不管我的服务器设置如何?

最佳答案

此选项表示 TLS 1.0:

objHTTP.Option(9) = 128

Windows 2008 R2 上的 winhttp.dll 库只引用了这个值。 这就是为什么您没有任何错误的原因。

下一个选项表示 TLS 1.1:

objHTTP.Option(9) = 512

但只有 Windows 2012 和更新版本知道这个值。 这就是您在 Windows 2008 R2 上出现错误的原因

因此您必须升级 Windows 才能使用此设置。

或者存在另一种使用注册表修复的方法。 因为如果您的代码中未指定,Windows 会使用此值。

这种方法无需更改任何代码行即可工作。

一般来说:

  • 在下一节中注册协议(protocol) TLS 1.1 或什至 1.2 更好(或两者)

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

  • 在下一节中使用值“DefaultSecureProtocols”告诉 winhttp.dll 默认使用这些协议(protocol)之一

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]

    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]

在我的回答中查看更多详细信息: Classic ASP Outbound TLS 1.2

关于ssl - 选项 9/Win2008/Classic ASP 上的 WinHttp 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31886775/

相关文章:

html - 使用 MSO 样式前缀格式化 word 页面

javascript - 使用 ASP 通过表单上传文件

wcf - 升级到Server 2008 R2会提高性能吗?

python - Windows Server 2008 还是 Vista?

.net - 如何让主动服务高可用?

java - 如何在具有 Https/ssl 的 Tomcat 服务器中启用 GZIP

ssl - NGINX + 让我们加密 : Could not automatically find a matching server block

android - 果冻 bean 的客户端证书错误

mysql - 带有 MySQL 的 Perl 模块 DBI 抛出 "error 2026 recorded: SSL connection error: protocol version mismatch"

c# - 如何将整数数组从经典 asp 传递到 c# COM 对象?