OpenSSL 인증서가 특정 개인 키로 생성되었는지 확인하는 방법은 무엇입니까?

OpenSSL 인증서가 특정 개인 키로 생성되었는지 확인하는 방법은 무엇입니까?

OpenSSL 인증서가 있습니다. 개인 키도 필요합니다. 서버 어딘가에 있다고 들었는데, 사실 여러 개의 SSL 키 파일을 발견했습니다.

무차별 대입으로 모든 것을 시도하기 전에: 인증서를 생성하는 데 개인 키가 사용되었는지 터미널에서 확인할 수 있는 방법이 있습니까?

답변1

이에 대한 고전적인 참조는 다음과 같습니다.이 FAQ온라인 Apache 문서에서.

해당 문서에서는 md5모듈러스가 사용되었습니다.

공개 지수는 일반적으로 65537이고 긴 모듈러스 숫자가 동일한지 시각적으로 확인하기 어렵기 때문에 다음 접근 방식을 사용할 수 있습니다.

이는 다음을 제공합니다:

$ openssl rsa -noout -modulus -in key.pem.decrypted | openssl md5
(stdin)= 9fxxfoobar558d9xx0045a89467d2bxx

$ openssl x509 -noout -modulus -in crt.pem | openssl md5
(stdin)= 9fxxfoobar558d9xx0045a89467d2bxx

나는 모듈러스의 시각적 비교를 피하기 위해 프로세스 대체 사용을 제안합니다.

$ diff \ 
    <(openssl x509 -noout -modulus -in cert.pem) \
    <(openssl rsa -noout -modulus -in key.pem.decrypted)

출력이 비어 있으면 개인 키가 인증서와 일치합니다.

이것은 Andrew Schulman의 답변에 있는 것보다 문자열을 비교하는 더 편리한 방법이며, 물론 유효합니다.

또 다른 참고자료여기.

답변2

인증서 파일이 특정 개인 키 파일과 연결된 공개 키를 인증하는지 확인하려면 각각과 연결된 공개 키를 비교하세요.

openssl rsa -in KEYFILE -pubout
openssl x509 -in CERTFILE -pubkey -noout

인증서와 개인 키는 공개 키가 동일한 경우에만 일치합니다.

관련 정보