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:
이 문제를 해결하려면 어떻게해야합니까?
모든 팁에 감사드립니다!
답변
이것은 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로 인해 발생할 수 있습니다 (타원 곡선을 사용하여 자체 서명 된 인증서를 생성했습니다).
특히, 기본 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
답변
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에 의해 발견되었습니다 .