명령 줄에서 SSL 인증서를 확인하려면 어떻게합니까?


52

여기에 저장된 rsa 키, ca 번들 및 인증서가 올바른지 확인 / 확인하려고합니다. 웹 서버에서 제공하지 않습니다. 어떻게 확인할 수 있습니까?


상기 봐 openssl x509매뉴얼 섹션.
alex

OpenSSL 확인 매뉴얼이 도움이 될 수 있습니다. 또한 이 페이지 에 훌륭한 예가 있습니다.
Stefan Lasiewski

답변:


61

인증서가 PEM 형식이라고 가정하면 다음을 수행 할 수 있습니다.

openssl verify cert.pem

"ca-bundle"이 PEM 형식의 추가 중간 인증서를 포함하는 파일 인 경우 :

openssl verify -untrusted ca-bundle cert.pem

openssl이 설치된 루트 인증서 세트를 자동으로 사용하도록 설정되지 않은 경우 (예 : in /etc/ssl/certs) CA를 사용 -CApath하거나 -CAfile지정할 수 있습니다 .


9
경고, openssl verify 명령은 예상보다 더 관대합니다! 기본적으로 주어진 CA 파일을 확인하는 것 외에도 시스템의 certs 디렉토리 (예 : / etc / ssl / certs)에서 일치하는 CA를 확인합니다. 이 동작을 방지하고 CAfile에서 제공 한 특정 CA 인증서를 검사하고 있는지 확인하려면 존재하지 않는 디렉토리와 함께 -CApath 옵션도 전달해야합니다. 예 : openssl verify -verbose -CApath nosuchdir -CAfile cacert.pem 서버 .crt
DSimon

2
한 가지 추가 경고 : 사용하는 경우 -CApath nosuchdirserver.crt와 cacert.pem의 조합에 루트 CA가 포함되어야합니다. openssl이 해당 파일이있는 중간 CA까지만 작동 할 수 있으면 불평합니다.
DSimon

에 해당 파일이 없습니다 /certs/. 이것이 문제를 일으킬까요? 내 서버가 작동하는 상황에서 메신저가 쌓여 있기 때문에 http curl은 작동하지만 https .. curl은 오류가 발생합니다. 웹 사이트가 작동을 멈춘 곳.
Giorgi Gvimradze

18

인증서 체인을 확인하는 하나의 라이너는 다음과 같습니다.

openssl verify -verbose -x509_strict -CAfile ca.pem -CApath nosuchdir cert_chain.pem

CA를 설치할 필요가 없습니다.

자세한 내용은 https://stackoverflow.com/questions/20409534/how-does-an-ssl-certificate-chain-bundle-work 를 참조하십시오.


1
경고 -CAfile 옵션이 예상보다 더 관대합니다. 자세한 내용은 허용되는 답변에 대한 내 의견을 참조하십시오.
DSimon

1
@ DSimon, 나는 -CApath nosuchdir이것을 대답에 추가 했습니다. 감사합니다.
Vadzim

문제 없습니다. 기꺼이 도와 드리겠습니다. :-) 이전 주석을 게시 한 후 알아 낸 한 가지 경고 :로 지정된 파일 -CAfile자체가 중간 인증서 인 경우 openssl이 불평합니다. verify루트 CA까지 완전한 체인이 필요하지만 오해의 소지가 있기 때문에 이것은 올바른 동작 입니다.
DSimon

2
내 버전 ( OpenSSL 1.1.1 11 Sep 2018)에는 인수가 -CApath기존 디렉토리가되어야합니다.
Jake Cobb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.