Я пытаюсь использовать OpenSSL для подключения к серверу SSL.
Когда я бегу:
openssl s_client -connect myhost.com:443
Следующие конфигурации клиента SSL работают нормально:
OpenSSL 0.9.83e 23 Feb 2007
)OpenSSL 0.9.8o 01 Jun 2010
)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 (с OpenSSL 1.0.1 14 Mar 2012
) Я получаю ошибку:
CONNECTED(00000003)
...:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:
Как я могу продолжить решение этой проблемы?
Мы очень ценим все советы!
Похоже, это известная проблема с 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
Эта ошибка может быть вызвана более старой версией 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
Если у вас возникла эта проблема с сервером Java HTTPS, работающим на OpenJDK, попробуйте отредактировать /etc/java-7-openjdk/security/java.security
и комментируя строку
security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg
как обнаружено Кристоф В.