openssl s_client의 출력 이해 고객에게는 문제가

이메일 제공 업체가 SSL 인증서를 변경 한 이후 모노를 기반으로하는 POP3 클라이언트는 보안 POP 서버에 연결하여 이메일을 다운로드하지 않습니다. 다른 고객에게는 문제가 없습니다. 예를 들어 Thunderbird 및 Outlook; 포트를 제외하고 홀수 포트를 검사 할 수있는 대부분의 SSL 검사기 사이트도 마찬가지 입니다. 문제를 정확히 파악하기 위해 두 공급자와 협력하고 있지만 SSL 인증서에 대해 충분히 알지 못하기 때문에 두 공급자 모두 결함이있는 위치를 이해할 수 있도록하기 위해 SSL 인증서에 대해 충분히 알지 못합니다.

조사하는 동안 다음 두 명령의 출력 차이에주의를 기울였습니다 (가독성을 위해 출력에서 ​​인증서를 제거했습니다).

echo "" | openssl s_client -showcerts -connect pop.gmail.com:995

연결됨 (00000003)
깊이 = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA오류
확인 : num = 20 : 로컬 발급자 인증서를 가져올 수 없습니다
반품 확인 : 0
---
인증서 체인
 0 초 : / C = US / ST = 캘리포니아 / L = 마운틴 뷰 / O = Google Inc / CN = pop.gmail.com
   i : / C = US / O = Google Inc / CN = Google 인터넷 기관 G2
----- 인증서 시작 -----
----- 종료 증명서 -----
 1 초 : / C = US / O = Google Inc / CN = Google 인터넷 기관 G2
   i : / C = US / O = GeoTrust Inc./CN=GeoTrust 글로벌 CA
----- 인증서 시작 -----
----- 종료 증명서 -----
 2 초 : / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
   i : / C = US / O = Equifax / OU = Equifax 보안 인증 기관
----- 인증서 시작 -----
----- 종료 증명서 -----
---
서버 인증서
subject = / C = US / ST = 캘리포니아 / L = 마운틴 뷰 / O = Google Inc / CN = pop.gmail.com
issuer = / C = US / O = Google Inc / CN = Google 인터넷 기관 G2
---
클라이언트 인증서 CA 이름이 전송되지 않았습니다.
---
SSL 핸드 셰이크가 3236 바이트를 읽고 435 바이트를 썼습니다.
---
새로운 TLSv1 / SSLv3, 암호는 RC4-SHA입니다.
서버 공개 키는 2048 비트입니다.
안전한 재협상이 지원됩니다
압축 : NONE
확장 : NONE
SSL 세션 :
    프로토콜 : TLSv1
    암호 : RC4-SHA
    세션 ID : 745F84194498529B91B7D9194363CBBD23425446CF2BFF3BF5557E3C6606CA06
    세션 ID-ctx :
    마스터 키 : DED1AE0A44609F9D6F54626F4370ED96436A561A59F64D66240A277066322DCD2CCB9A6D198C95F4D2B0C7E6781EECD2
    키 인수 : 없음
    시작 시간 : 1397678434
    타임 아웃 : 300 (sec)
    리턴 코드 확인 : 20 (로컬 발행자 인증서를 얻을 수 없음)
---
69.3.61.10 c13mb42148040pdj의 요청에 대해 + OK Gpop 준비
끝난

echo "" | openssl s_client -showcerts -connect secure.emailsrvr.com:995

연결됨 (00000003)
깊이 = 2 / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
확인 오류 : NUM = 19 : 인증서 체인의 자체 서명 인증서
반품 확인 : 0
---
인증서 체인
 0 s : /serialNumber=tG0GnsyAUkdX7DEo15ylNBjQJqAWZ/dD/OU=4159320284/OU=4159320284/OU=www.rapidssl.com/resources/cps (c) 14 / OU = 도메인 제어 확인-RapidSSL (R) /CN=secure.emailsrvr.com
   i : / C = US / O = GeoTrust, Inc./CN=RapidSSL CA
----- 인증서 시작 -----
----- 종료 증명서 -----
 1 초 : / C = US / O = GeoTrust, Inc./CN=RapidSSL CA
   i : / C = US / O = GeoTrust Inc./CN=GeoTrust 글로벌 CA
----- 인증서 시작 -----
----- 종료 증명서 -----
 2 초 : / C = US / O = GeoTrust Inc./CN=GeoTrust Global CA
   i : / C = US / O = GeoTrust Inc./CN=GeoTrust 글로벌 CA
----- 인증서 시작 -----
----- 종료 증명서 -----
---
서버 인증서
subject = / serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ / dD / OU = 4159320284 / OU = 4159320284 / OU = www.rapidssl.com / resources / cps (c) 14 / OU = 도메인 제어 확인-RapidSSL (R) /CN=secure.emailsrvr.com
발급자 = / C = US / O = GeoTrust, Inc./CN=RapidSSL CA
---
클라이언트 인증서 CA 이름이 전송되지 않았습니다.
---
SSL 핸드 셰이크가 3876 바이트를 읽고 319 바이트를 썼습니다.
---
새로운 TLSv1 / SSLv3, 암호는 DHE-RSA-AES256-SHA입니다.
서버 공개 키는 2048 비트입니다.
안전한 재협상이 지원됩니다
압축 : NONE
확장 : NONE
SSL 세션 :
    프로토콜 : TLSv1
    암호 : DHE-RSA-AES256-SHA
    세션 ID : 3F4EE3992B46727BE2C7C3E76A9A6A8D64D66EE843CB1BB17A76AE2E030C7161
    세션 ID-ctx :
    마스터 키 : 016209E50432EFE2359DB73AB527AF718152BFE6F88215A9CE40604E8FF2E2A3AC97A175F46DF737596866A8BC8E3F7F
    키 인수 : 없음
    시작 시간 : 1397678467
    타임 아웃 : 300 (sec)
    리턴 코드 확인 : 19 (인증서 체인에서 자체 서명 된 인증서)
---
끝난

-CApath옵션이 제공되면 명령이 오류를 생성하지 않기 때문에 이것이 의미가 있는지 이해하려고 노력했습니다 .

openssl s_client -CApath /etc/ssl/certs -showcerts -connect secure.emailsrvr.com:995

CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = "GeoTrust, Inc.", CN = RapidSSL CA
verify return:1
depth=0 serialNumber = tG0GnsyAUkdX7DEo15ylNBjQJqAWZ/dD, OU = 4159320284, OU = See www.rapidssl.com/resources/cps (c)14, OU = Domain Control Validated - RapidSSL(R), CN = secure.emailsrvr.com
verify return:1
...

openssl s_client -CApath /etc/ssl/certs -showcerts -connect pop.gmail.com:995

CONNECTED(00000003)
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = pop.gmail.com
verify return:1
...

또한 GeoTrust에서 직접 CAfile 인증서를-CAfile 다운로드 한 후이 옵션을 성공적으로 사용할 수 있습니다 .

그럼에도 불구하고 Fog Creek은 인증서가 Trust성공하지 않고 모노 저장소에 인증서를 추가하려고 시도했기 때문에 인증서에 문제가 있다고 생각하는 것 같습니다 . 동의하지 않지만 (위에서 언급했듯이) 대부분의 SSL 검사기가 포트 995를 검사하지 않거나 시도 중에 성공했지만 SSL 오류 7을 생성하는 이 페이지 를 발견 했습니다 .

인증서에 아무런 문제가 없음을 의미하기 위해 출력을 올바르게 해석합니까?



답변

이에 대한 답은 (이 security.SE post에 설명되어 있음 ) 체인에 표시 되는 두 개의 GeoTrust Global CA 인증서는 실제로 동일한 인증서가 아니며 하나는 다른 인증서 에서 파생 된 것입니다.

CA 교차 서명으로 인해!

GeoTrust Global CA 인증서를 처음 작성하고 서명하면 컴퓨터 / 브라우저 / 애플리케이션이 신뢰 저장소에 없었을 것입니다.

필요에 의해 다른 갖는 GeoTrust의 루트 CA 인증서없이 GeoTrust의 루트 CA 인증서, 이제 두 번째 CA에 의해 확인 될 수있다 (에 “다리”인증서로 함) 결과 인증서에 서명 (기존의 명성과 분포) CA를 클라이언트가 명시 적으로 신뢰해야합니다.

Google이 CrossSigned 버전의 GeoTrust 루트 CA 인증서를 제시하면 원본을 신뢰하지 않는 클라이언트는 Equifax CA 인증서를 사용하여 GeoTrust를 확인할 수 있습니다. 따라서 Equifax는 일종의 “레거시”신뢰 앵커 역할을합니다.


답변

ssl check for을 활성화했을 때 fetchmail과 비슷한 문제가있었습니다 pop.gmail.com.

나는 Equifax pem 파일을 다운로드했지만 그대로 작동하지 않았 c_rehash ssl/certs으며 해시 값으로 심볼릭 링크를 만든 다음 작동했습니다.

또는 해시 값은 다음을 실행하여 알 수도 있습니다.

openssl x509 -in Equifax_Secure_Certificate_Authority.pem -fingerprint -subject -issuer -serial -hash -noout | sed  -n /^[0-9]/p

https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.pem


답변

인증서를 생성하고 구성하는 동안 올바른 경로, 인증서 이름 등을 나타내도록 openssl.cnf파일도 업데이트해야 합니다 (Debian- /etc/ssl/openssl.cnf) -CApath. 옵션 없이 명령을 실행하고 확인할 수 있습니다.

따라서 원격 호스트도이 경우 인증서를 올바르게 확인할 수 있습니다.

적절한 openssl.cnf섹션 은 다음과 같습니다 .

####################################################################
[ ca ]

default_ca  = CA_default        # The default ca section

####################################################################
[ CA_default ]

dir     = /etc/ssl


답변