TLS 버전 불내성을 테스트하는 방법은 무엇입니까?

TLS 버전 불내성을 테스트하는 방법은 무엇입니까?

Mozilla Firefox 38로 업데이트한 후 일부 HTTPS 웹사이트에서 "보안 연결 실패" 메시지를 볼 수 있습니다.

"security.tls.insecure_fallback_hosts"를 사용하여 웹사이트를 제외 목록에 넣으면 TLSv1.2를 통해 연결될 수 있음을 알 수 있습니다(사용https://addons.mozilla.org/en-us/firefox/addon/calomel-ssl-validation/)

서버 문제는 호환되지 않는 TLS 버전으로 인해 발생하는 것으로 의심됩니다.

질문: 특정 웹 서버에 특정 포트에 대한 TLS 버전 불내성이 있는지 테스트하는 스크립트나 솔루션이 있습니까? 이러한 서버는 인터넷에서 공개적으로 사용할 수 없습니다.

답변1

예를 들어 시작점으로 테스트를 위해 OpenSSL 명령줄 도구를 사용할 수 있습니다.

$ openssl s_client -connect example.com:443 -verify 1 -tls1_2

어디:

-tls1_2 - TLSv1.2만 사용

도움말( openssl s_client -h또는 man s_client)에서는 여러 다른 옵션에 대해 설명합니다. 예를 들어 암호 목록을 지정할 수 있습니다. 이 옵션도 제한적입니다/최신 클라이언트/서버가 명시적으로 설정할 수 있으므로 연결 실패가 발생할 수 있습니다. 특히 이전 서버/클라이언트에 연결할 때 또는 이전 서버/클라이언트에서 연결할 때.

다른 결과를 보여주는 예:

$ echo | openssl s_client -verify 1  -connect www.cebitec.uni-bielefeld.de:443
[..]
verify return:1
[..]
SSL-Session:
  Protocol  : TLSv1
  Cipher    : AES128-SHA
  Session-ID: [non-empty]
[..]
---
DONE
$ echo $?
0

이는 최소 버전을 적용하지 않고 이제 TLS 1.2 요구 사항이 있습니다.

$ echo \
  | openssl s_client -verify 1 -tls1_2 -connect www.cebitec.uni-bielefeld.de:443
[..]
[..]:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:347:
--
no peer certificate available
[..]
SSL-Session:
  Protocol  : TLSv1.2
  Cipher    : 0000
  Session-ID: 
  Session-ID-ctx: 
  Master-Key:
[..]
---
$ echo $?
1

서버가 TLS 1.2를 지원하지 않음을 의미합니다.

아마도 상당히 오래된 버전의 openssl을 사용하기 때문일 것입니다.

답변2

홈페이지가 인터넷에 있는 경우,https://www.ssllabs.com/ssltest/이러한 문제를 디버깅하기 위한 훌륭한 도구입니다.

maxschlepzig의 답변은 특히 편협함을 테스트하지만 최근 더 약한 Diffie-Hellman 키를 포함하여 여러 가지 이유로 실패하는 것을 보았습니다. 배포판이 NSS 또는 OpenSSL을 업그레이드했을 수 있으므로 키 <= 768비트를 거부합니다. 과거에는 일반적인 비밀번호를 공유하지 않는 등 큰 ClientHello로 인해 작업이 실패하는 것을 보았습니다.

일반 SSL/TLS 문제 디버깅에 사용됩니다.비밀번호 스캔좋은데 할 수 없어아직 과민증 테스트를 거치지 않았습니다.. 또 다른 유용한 도구는SSL 스캔.

관련 정보