Подпрограммы SSL: SSL23_WRITE: сбой рукопожатия ssl

32

Я пытаюсь использовать OpenSSL для подключения к серверу SSL.

Когда я бегу:

openssl s_client -connect myhost.com:443

Следующие конфигурации клиента SSL работают просто отлично:

  • Windows ( OpenSSL 0.9.83e 23 Feb 2007)
  • Linux ( OpenSSL 0.9.8o 01 Jun 2010)
  • Linux ( OpenSSL 1.0.0-fips 29 Mar 2010)

Выход из любого успешного соединения выглядит так:

New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DES-CBC3-SHA
    Session-ID: (hidden)
    Session-ID-ctx:
    Master-Key: (hidden)
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1337266099
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)

Однако, когда я использую клиент с моей Ubuntu 12.04 (w / OpenSSL 1.0.1 14 Mar 2012), я получаю ошибку:

CONNECTED(00000003)
...:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:

Как я могу приступить к решению этого?

Все советы очень ценятся!

Jaakko
источник
Какой протокол и шифр используются при подключении из Windows?
Шейн Мэдден
Он говорит: New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA. Хотелось бы я понять, что все это значит! :)
Jaakko
DES? Это странный шифр с наивысшим приоритетом. К какому серверу вы подключаетесь?
Шейн Мэдден
1
Может быть, значения по умолчанию в более новом openssl по умолчанию ограничивают старые версии протокола ssl? Было бы несколько причин сделать это, учитывая недавний беспорядок
Зверя
1
Понял, понял. Вы проверяете клиентов на своем сайте.
Брент

Ответы:

28

Похоже, это известная проблема с Ubuntu 1.0.1 OpenSSL: https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371

Это не похоже на исправление доступно. Если возможно, вы можете понизить до 1.0.0.

Пытаться openssl s_client -tls1 -connect myhost.com:443

казарка
источник
Подробнее о проблеме на билете Debian: bugs.debian.org/cgi-bin/bugreport.cgi?bug=665452
Брент
PS Я дам вам награду, когда она истечет (19 часов)
Яакко
1
Звучит хорошо :) Заключительная часть информации, входящий билет с OpenSSL, который, кажется, является основной причиной проблемы: rt.openssl.org/Ticket/…
brent
Благодарность! Этот ответ также работает для OpenSSL 0.9.8zh 14 января 2016 на Mac
tytk
4

Эта ошибка может быть вызвана более старой версией openssl, когда он не может повторно согласовать шифр (я сгенерировал самоподписанный сертификат, используя эллиптические кривые).

В частности, я получаю ту же ошибку на MacOS с openssl по умолчанию - 0.9.8zh

После установки brew версии OpenSSL 1.0.2f ошибка исчезла:

~/bin/openssl s_client -connect localhost:45678 | grep Cipher

verify return:1
New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES256-GCM-SHA384
    Cipher    : ECDHE-ECDSA-AES256-GCM-SHA384
Андрей Сура
источник
после установки brew моя версия openssl в / usr / bin / openssl была старой версией. Мне пришлось специально перейти на /usr/local/Cellar/openssl/1.0.2o_2/bin, чтобы запустить последнюю версию openssl
Gopi Palamalai
2

Если вы столкнулись с этой проблемой на сервере HTTPS Java, работающем на OpenJDK, попробуйте отредактировать /etc/java-7-openjdk/security/java.securityи закомментировать строку

security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg

как обнаружил Christoph W .

Aldaviva
источник