openssl/curl 오류: SSL23_GET_SERVER_HELLO:tlsv1 경고 내부 오류

openssl/curl 오류: SSL23_GET_SERVER_HELLO:tlsv1 경고 내부 오류

Ubuntu 14.04에서 openssl 또는 컬을 사용하여 서버 중 하나에 연결하는 데 매우 이상한 문제가 발생했습니다.

실행 중:

openssl s_client -connect ms.icometrix.com:443

다음을 제공합니다:

CONNECTED(00000003)
140557262718624:error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert
internal error:s23_clnt.c:770:

실행할 때 비슷한 오류가 발생합니다.

curl https://ms.icometrix.com
curl: (35) error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert
internal error

openssl 버전 출력(클라이언트/서버):

OpenSSL 1.0.1f 6 Jan 2014

dpkg -l openssl의 openssl 출력:

1.0.1f-1ubuntu2

재미있는 점은 다른 버전의 Openssl과 연결하면 문제가 사라진다는 것입니다.

  • Mac에서는 OpenSSL 0.9.8zd(2015년 1월 8일), 모두 정상입니다.
  • centos에서 OpenSSL 1.0.1e-fips 2013년 2월 11일, 모두 정상입니다.
  • 2015년 7월 9일 Ubuntu 14.04, OpenSSL 1.0.2d의 최신 안정 릴리스, 모두 괜찮습니다.

서버 측에서는 이상한 점을 볼 수 없습니다. 문제는 컴퓨터에서 SSL3을 비활성화했을 때 시작되었습니다.

apt-get의 빌드에 문제가 있을 수 있나요?

apt-cache showpkg에서 제안한 다른 버전도 테스트했지만 문제는 여전히 남아 있습니다.

답변1

이는 클라이언트와 서버 간의 ECDH 지원에 문제가 있는 것 같습니다. 모든 ECDH 암호를 제외하면 작동합니다.

openssl s_client -connect ms.icometrix.com:443 -cipher 'DEFAULT:!ECDH'

내 생각엔 서버가 클라이언트가 제공하는 25개의 ECC 곡선 중 일부에서 삐걱거리는 것 같습니다. 브라우저는 몇 가지 곡선만 제공합니다. OpenSSL 0.9.8은 아직 ECC를 지원하지 않으며 RedHat/CentOS에는 특허상의 이유로 기본적으로 ECC를 비활성화한 이력이 있습니다. OpenSSL 1.0.2 버전에 액세스할 수 없기 때문에 OpenSSL 1.0.2가 작동하는 이유를 모르겠습니다.

모든 배포판은 이전 버전을 유지하지만 보안 패치를 추가하기 때문에 OpenSSL 버전을 제공하는 것만으로는 충분하지 않습니다. 대신 dpkg -l openssl내 시스템에서 1.0.1f-1ubuntu2.15를 제공하는지 확인하세요 .

관련 정보