Обходной путь для ошибки SSL - PullRequest
4 голосов
/ 01 апреля 2009

Кажется, есть ошибка в реализации SSL сервера https, к которому я подключаюсь; изначально проблема возникла в моем приложении, но с тех пор я отлаживал / воспроизводил ее с помощью утилиты командной строки openssl, поэтому я совершенно уверен, что на данный момент она не имеет ничего общего с моим приложением.

Если я подключаюсь к удаленному серверу без параметров, кроме -connect, OpenSSL отправляет SSLv2 CLIENT-HELLO, сервер отвечает TLSv1 ServerHello, и все идет нормально.

Если я соединяюсь с -ssl3, OpenSSL отправляет SSLv3 ClientHello, сервер отвечает SSLv3 ServerHello, и снова все в порядке.

Однако, если я соединяюсь с -no_ssl2 или -tls1, OpenSSL отправляет TLSv1 ClientHello, а сервер отвечает "TLS 1.0 Alert [length 0002], fatal unexpected_message", что является первоначальной проблемой, с которой я столкнулся в моем приложении.

Существует ряд возможных обходных путей, которые предлагают себя на данный момент, но я в идеале ищу что-то общее, а не специальный корпус этого конкретного сервера, поэтому я надеюсь, что есть какой-то «стандартный» обходной путь для это.

1 Ответ

2 голосов
/ 02 апреля 2009

Кажется, что проблема действительно была вызвана расширением билета сеанса RFC 5077; отключение этого (например, путем передачи -no_ticket в openssl) позволило TLSv1 ClientHello успешно работать с удаленным сервером. Поскольку в моем приложении нет особой необходимости в этом расширении, этот обходной путь представляется наиболее подходящим способом.

Небольшое исследование показывает, что проблема может быть просто в пустых расширениях билета сеанса, но я не стал пытаться выяснить, были ли у этого конкретного сервера проблемы с непустыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...