openssl -showcerts 및 -servername이 잘못된 앵커/루트를 제공합니까?

openssl -showcerts 및 -servername이 잘못된 앵커/루트를 제공합니까?

주제에 대한 여러 SO 게시물을 읽었음에도 불구하고(예를 들어그리고예를 들어), openssl s_client -showcerts -servername잘못된 앵커/루트 인증서가 다운로드되었지만 내 웹 브라우저에는 올바른 앵커/루트 인증서가 표시되었습니다.

# get the chain of certs
[root@server dir]# openssl s_client -connect www.google.com:443 -servername www.google.com -showcerts 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > chain.pem
[root@server dir]#

# save the chain's certs to files: cert.pem (client/leaf) cert1.pem cert2.pem
[root@server dir]# cat chain.pem | awk 'split_after == 1 {n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
[root@server dir]#

# verify fails
[root@server dir]# openssl verify -trusted cert2.pem -untrusted cert1.pem cert.pem                                           
cert.pem: C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
error 2 at 2 depth lookup:unable to get issuer certificate

# verify succeeds
# openssl verify -trusted ANCHOR-FROM-BROWSER.PEM -untrusted cert1.pem cert.pem
cert.pem: OK

Firefox에서는 Google의 앵커/루트 PEM에 "AocvmM"이 포함되어 있다고 올바르게 표시하지만 openssl은 이를 찾을 수 없습니다(CentOS 7.4 및 Ubuntu 16.04.3 LTS, btw에서도 동일한 동작).

[root@server dir]# openssl s_client -connect www.google.com:443 -showcerts -servername www.google.com 2>&1 < /dev/null | grep AocvmM
[root@server dir]# 

질문: -showcerts가 표시되지 않는 이유옳은앵커/루트 인증서? 즉, 앵커/루트가 아닌 경우 -showcerts는 어떤 인증서를 표시합니까?

답변1

"번들"(인증서 체인이 있는 파일)에 포함된 인증서 목록은 페이지를 제공하는 웹 서버(아마도 Apache)에 의해 결정됩니다. openssl은 s_client(또는 일반적으로 openssl)가 정확하고 완전한 목록을 수신하는지 여부를 제어할 수 없습니다.

루트 인증서가 필요합니다이 웹사이트에서 찾을 수 있습니다.

다음을 포함한 텍스트 복사

-----BEGIN CERTIFICATE-----

~까지

-----END CERTIFICATE-----

명명된 사람에게equifax.pem

그런 다음 전체 체인을 확인합니다.

$ openssl verify -CAfile equifax.pem -untrusted cert1.pem -untrusted cert2.pem cert.pem
cert.pem: OK

편집하다

이는 Equifax 인증서가 기본 로컬 SSL 인증서 저장소(/etc/ssl/certs/)에 있는 경우에도 작동합니다.

$ openssl verify -untrusted cert1.pem -untrusted cert2.pem cert.pem
cert.pem: OK

Equifax 인증서가 SSL 인증서 디렉터리에 있는지 여부는 별도의 문제입니다. 업데이트할 수 있습니다.

관련 정보