未指定SSL协议时可能会导致https失败?

我有一个VBScript程序,从不受我控制的服务器检索网页。 该URL看起来像https://someserver.xxx/index.html 。 我使用这段代码来创build页面获取的对象:

 Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1") 

当我编写我的程序时,检索此页面没有任何问题。 最近,服务这个页面的Web服务器经历了升级。 现在我的程序不能再获取页面。

一些线索:

线索1.如果我使用浏览器(我试过Firefox,IE和Chrome),我可以访问网页。

线索2. VBScript代码产生这个错误:

收到的消息是意外或格式不正确。

线索3.我可以在某些情况下从命令行获取网页,但在其他情况下不能:

 curl --sslv3 -v -k 'https://someserver.xxx/index.html' # WORKS! curl --sslv2 -v -k 'https://someserver.xxx/index.html' # WORKS! curl -v -k 'https://someserver.xxx/index.html' # FAILS curl --tlsv1 -v -k 'https://someserver.xxx/index.html' # FAILS 

在我没有指定协议的情况下,我得到这个错误:

 * SSLv3, TLS handshake, Client hello (1): * error:14077417:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert illegal parameter * Closing connection #0 

在我指定--tlsv1的情况下,我得到这个错误:

 * SSLv3, TLS handshake, Client hello (1): * SSLv3, TLS alert, Server hello (2): * error:14094417:SSL routines:SSL3_READ_BYTES:sslv3 alert illegal parameter * Closing connection #0 

答:有没有人对Web服务器端可能发生的任何问题有任何build议或意见(我无法与Web服务器的pipe理员进行交stream,以了解他们所做的更改)。

B.有没有办法可以改变我的VBScript代码来解决这个问题? SSL版本可以被强制吗?

VB显然不理解/解码完整的TLS协议; 在这种情况下是TLS警报(即消息types0x15)。

我当然不是VB程序员,但我相信你可以设置一个属性(我通过咨询了解到http://www.chilkatsoft.com/refdoc/vbnetSocketRef.html):SslProtocol as String“SSL 3.0”

看起来他们在升级时降低了安全性。 TLS安全似乎不起作用。 这可能是因为您在检查默认或validationTLS安全性的补丁的结果。 获取页面后,您应该能够识别浏览器中使用的安全性。 我会尝试联系[email protected],因为他们可能不打算不符合TLS安全。

如果VBScript使用Internet Explorer设置,则可以尝试禁用IE中的所有TLS密码。 这应该强制VBScript协商SSLv3或SSLv2密码。 我将从禁用3DES开始,因为使用安全实现连接到服务器时存在Windows问题。