Назад | Перейти на главную страницу

Что может вызвать сбой https, если не указать протокол SSL?

У меня есть программа VBScript, которая извлекает веб-страницу с сервера, не находящегося под моим контролем. URL-адрес выглядит примерно так https://someserver.xxx/index.html. Я использую этот код для создания объекта, который получает страницу:

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

Когда я писал свою программу, у нее не было проблем с получением этой страницы. Недавно веб-сервер, обслуживающий эту страницу, прошел обновление. Теперь моя программа больше не может получать страницу.

Некоторые подсказки:

Подсказка 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

A. Есть ли у кого-нибудь предложения или идеи по поводу того, что может происходить на стороне веб-сервера (я не могу поговорить с администраторами веб-сервера, чтобы узнать, что они изменили).

Б. Есть ли способ изменить свой код VBScript, чтобы обойти эту проблему? Можно ли принудительно установить версию SSL?

VB явно не понимает / не декодирует полный протокол TLS; в этом случае предупреждение TLS (т.е. тип сообщения 0x15).

Я, конечно, не программист VB, но я считаю, что вы можете установить свойство (о чем я узнал, проконсультировавшись http://www.chilkatsoft.com/refdoc/vbnetSocketRef.html): SslProtocol как строка "SSL 3.0"

Похоже, они понизили безопасность в своем обновлении. Безопасность TLS, похоже, не работает. Это может быть результатом исправления на вашей стороне, проверяющего использование TLS по умолчанию или проверку безопасности. Вы должны быть в состоянии определить безопасность, используемую в браузере, после того, как вы загрузили страницу. Я бы попытался связаться с hostmaster@someserver.xxx, поскольку они, вероятно, не собираются быть несовместимыми с безопасностью TLS.

Если VBScript использует настройку Internet Explorer, вы можете попробовать отключить все шифры TLS в IE. Это должно заставить VBScript согласовывать шифр SSLv3 или SSLv2. Я бы начал с отключения 3DES, поскольку были (есть) проблемы с Windows при подключении к серверам с использованием безопасной реализации.