Ошибка подключения OpenSSL SSL23 получить сервер привет, но браузер и curl работает

Я имею дело с проблемой, когда python не может подключиться к определенному серверу через ssl из-за того, что openssl не может завершить рукопожатие. Curl и мой браузер работают. Я пробовал несколько разных версий openssl и решений, но не может подключиться.

вот что я пробовал на обоих платформах. Вывод печатается немного иначе на OpenSSL 1.0.1 e, но это все те же ошибки.

Mac OSX Yosemite - OpenSSL 0.9.8zg 14 July 2015
Debian GNU/Linux 7 (wheezy) - OpenSSL 1.0.1e 11 Feb 2013

без указание версии

openssl s_client -connect www.uk-recruitment.net:443
openssl s_client -connect www.uk-recruitment.net:443 -cipher 'DEFAULT:!ECDH'
openssl s_client -connect www.uk-recruitment.net:443 -CAfile cacert.pem
openssl s_client -connect www.uk-recruitment.net:443 -CAfile cacert.pem -cipher 'DEFAULT:!ECDH'
openssl s_client -connect www.uk-recruitment.net:443 -CAfile cacert.pem -cipher 'DEFAULT:!ECDH' -servername uk-recruitment.net

но я всегда получаю один и тот же результат

CONNECTED(00000003)
66716:error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error:/SourceCache/OpenSSL098/OpenSSL098-52.40.1/src/ssl/s23_clnt.c:593: 

если я добавить -tls1, -tls1_1 или -tls1_2 со всеми теми же параметрами я получаю немного другую ошибку:

openssl s_client -connect www.uk-recruitment.net:443 -tls1
CONNECTED(00000003)
66750:error:14094438:SSL routines:SSL3_READ_BYTES:tlsv1 alert internal error:/SourceCache/OpenSSL098/OpenSSL098-52.40.1/src/ssl/s3_pkt.c:1145:SSL alert number 80
66750:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:/SourceCache/OpenSSL098/OpenSSL098-52.40.1/src/ssl/s3_pkt.c:566:

1 ответов


сайты требует указание имени сервера (SNI) и SSL рукопожатия не с помощью SNI вызовет сбой:

$ openssl s_client -connect www.uk-recruitment.net:443
CONNECTED(00000003)
139999237719712:error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error:s23_clnt.c:770:

С SNI вместо этого выглядит намного лучше:

$ openssl s_client -connect www.uk-recruitment.net:443 -servername www.uk-recruitment.net
CONNECTED(00000003)
...
   Cipher    : ECDHE-ECDSA-AES128-GCM-SHA256

возможно,-servername опция недоступна с OpenSSL 0.9.8, но она должна быть с OpenSSL 1.0.1.