openssl s_client의 출력 이해


14

이메일 제공 업체가 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을 생성하는 이 페이지 를 발견 했습니다 .

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


2
"인증서 체인의 자체 서명 된 인증서"오류는 빨간색 청어입니다. 루트 CA는 항상 자체 서명되므로 전체 인증서 체인을 반환하는 서버는 항상 자체 서명 인증서를 반환합니다. 자세한 내용은 여기를 참조하십시오 .
bennettp123

2
실제로 openssl s_client기본적으로 루트 인증서를 가져 오지 않는 것 같습니다 . 대신 다음을 시도하십시오. openssl s_client -connect secure.emailsrvr.com:995 -showcerts -CApath /etc/ssl/certs그러면 자체 서명 오류가 사라질 수 있습니다.
bennettp123

@ bennettp123 나는 그 명령의 출력이 질문의 맨 아래를 향한 것에 주목합니다. 인증서가 유효하다는 것을 의미하는 두 가지 버전의 명령 출력을 이해하는 것이 좋습니까?
jobu1324

예, 해당 출력에 따르면 openssl은 인증서가 유효하다고 생각합니다. 왜 거부되고 있습니까? 모르겠어요 조직 필드가 설정되지 않았기 때문일 수 있지만 추측 일뿐입니다.
bennettp123

답변:


5

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

CA 교차 서명으로 인해!

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

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

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


그렇기 때문에 두 서버 체인이 다르지만 모두 유효합니다. 그러나 특정 모노 인스턴스의 트러스트 스토어에 어떤 루트가 설치되어 있고 설치되어 있지 않은지에 대한 명확한 데이터 가 없으면 반드시 모노 클라이언트에 대한 OP 문제의 원인 일 필요 는 없습니다.
dave_thompson_085

0

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


연결된 pem 파일로 수행 할 작업을 확장 할 수 있습니까?
sebix

# ldd / usr / bin / fetchmail | grep ssl libssl.so.10 => /lib64/libssl.so.10
chetangb

필자가 언젠가 읽은 것은 fetchmail이 openssl 라이브러리를 사용하고 cert productforums.google.com/forum/#!topic/gmail/tqjOmqxpMKY # ldd / usr / bin / fetchmail | grep ssl libssl.so.10 => /lib64/libssl.so.10 yum libssl.so.10에서 제공하는 내용 yussl-libs-1.0.1e-42.el7.i686 : TLS 구현이 포함 된 범용 암호화 라이브러리 Repo : base Matched from : 제공 : libssl.so.10
chetangb

답을 넓히고 문제가 무엇인지, 달성하고자하는 것을 설명하십시오.
sebix 2016 년

0

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

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

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

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

default_ca  = CA_default        # The default ca section

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

dir     = /etc/ssl  

1
이것은 잘못 이다. default_ca(any) openssl 구성 파일 의 데이터 는 'ca'유틸리티가 인증서를 발급하고 선택적으로 취소하는 데 에만 사용 되며 확인을 위해 절대로 사용하지 않습니다. 재 컴파일 이외의 기본 검증 저장소를 변경하는 방법은 환경 변수 SSL_CERT_ {FILE, DIR}을 사용하는 것입니다. 그러나 (1) 버그로 인해 s_client기본값 (2015 년 4 월 현재 계획된 수정)을 사용하지 않으며, (2)이 OP는 변경하지 않으려 고합니다.
dave_thompson_085
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.