SSL 루틴 : SSL23_WRITE : SSL 핸드 셰이크 실패


32

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 (w / OpenSSL 1.0.1 14 Mar 2012) 와 함께 클라이언트를 사용 하면 오류가 발생합니다.

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

이 문제를 해결하려면 어떻게해야합니까?

모든 팁에 감사드립니다!


Windows에서 연결할 때 어떤 프로토콜과 암호가 사용됩니까?
Shane Madden

그것은 말합니다 : New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA. 이것이 무엇을 의미하는지 이해하기를 바랍니다! :)
Jaakko

DES? 우선 순위가 가장 높은 이상한 암호입니다. 어떤 종류의 서버에 연결하고 있습니까?
Shane Madden

1
아마도 새로운 openssl의 기본값은 기본적으로 이전 SSL 프로토콜 버전을 제한합니까? 최근 BEAST 혼란을 감안할 때 몇 가지 이유가있을 것입니다 ...
rackandboneman

1
D' oh, 이해했다. 귀하의 사이트에 대해 클라이언트를 테스트하고 있습니다.
brent

답변:


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


데비안 티켓 관련 문제에 대한 자세한 내용 : bugs.debian.org/cgi-bin/bugreport.cgi?bug=665452
brent

추신 : 나는 만료되면 (19 시간) 현상금을 줄 것이다
Jaakko

1
좋은 소리 :) 문제의 근본 원인 인 것으로 보이는 OpenSSL의 업스트림 티켓 최종 정보 : rt.openssl.org/Ticket/…
brent

감사! 이 답변은 Mac에서 OpenSSL 0.9.8zh 2016 년 1 월 14 일에 작동
tytk

4

이 오류는 암호를 다시 협상 할 수 없을 때 이전 버전의 openssl로 인해 발생할 수 있습니다 (타원 곡선을 사용하여 자체 서명 된 인증서를 생성했습니다).

특히, 기본 openssl-0.9.8zh와 함께 MacOS에서 동일한 오류가 발생했습니다.

추출 버전 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 설치를 수행 한 후 / usr / bin / openssl의 openssl 버전이 이전 버전이었습니다. 내가 특별히 최신 버전의 OpenSSL 실행 /usr/local/Cellar/openssl/1.0.2o_2/bin 가야했다
Gopi Palamalai

2

OpenJDK에서 실행중인 Java HTTPS 서버에서이 문제가 발생하면 편집 /etc/java-7-openjdk/security/java.security하고 주석 처리하십시오.

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

Christoph W에 의해 발견되었습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.