이 인증서 체인을 확인할 수없는 이유는 무엇입니까?


16

체인에 3 개의 인증서가 있습니다.

  • root.pem
  • intermediate.pem
  • john.pem

그것들을 사용하여 검사 할 때 openssl x509 -in [filename] -text -nooutroot.pem은 자체 서명 된 것처럼 보이며 (Issuer == Subject) 각 인증서의 주제는 예상대로 다음 인증서의 발급자입니다.

실제로 중간 인증서까지 체인을 확인할 수 있습니다.

$ openssl verify -CAfile root.pem root.pem
root.pem: OK
$ openssl verify -CAfile root.pem intermediate.pem
intermediate.pem: OK

그러나 john.pem은 실패합니다.

$ openssl verify -CAfile root.pem -CAfile intermediate.pem john.pem
john.pem: C = CL, [...redacted data...]
error 2 at 1 depth lookup:unable to get issuer certificate

내가 아는 한, 이것은 openssl이 intermediate.pem의 발급자를 찾을 수 없음을 의미합니다. root.pem은 실제로 intermediate.pem의 발급자이므로 의미가 없습니다.

내가 무엇을 놓치고 있습니까?


편집 : 원래 root.pem과 intermediate.pem을 하나의 파일로 연결해야한다는 대답을 게시 한 다음이 파일을에 대한 매개 변수로 사용해야합니다 -CAfile. Johannes Pille이 지적했듯이 이것은 묵시적으로 intermediate.pem을 신뢰하기 때문 입니다. 그가 삭제 한 답변에 게시 한 링크를 읽으십시오 : https://mail.python.org/pipermail/cryptography-dev/2016-August/000676.html


답을 삭제하십시오. 잘못된 정보입니다!
Johannes Pille 2019

1
@JohannesPille Done, 정보 주셔서 감사합니다
Jong Bor

실제로 그것을하고 빠른 반응을위한 쿠도.
Johannes Pille

답변:


14

인증서를 확인하기 위해 두 인증서를 함께 분류 할 필요는 없습니다.

다음 세 가지 인증서가있는 경우 :

  • root.pem-자체 서명 된 인증서를 저장합니다.
  • intermediate.pem-root.pem이 서명 한 인증서를 저장합니다.
  • john.pem-intermediate.pem이 서명 한 인증서를 저장합니다.

그리고 root.pem 만 신뢰 john.pem하면 다음 명령으로 확인 합니다.

openssl verify -CAfile root.pem -untrusted intermediate.pem john.pem

많은 중간체를 가지고 있었고 -untrusted intermediate2.pem -untrusted intermediate3.pem ...


이. 유일한 정답입니다.
Johannes Pille

번들에 중간 및 루트 CA 인증서가 모두 있으면 인증서를 openssl선택하고 인증서를 확인할 것이라고 생각했습니다. 이것이 일어날 이유가 있습니까? 예를 들어, 사용자 인증서에 서명 한 사람은 중간에 서명하지 않고 루트 또는 다른 것에 서명 했습니까?
FilBot3

이 답변의 마지막 문장이 잘못되었습니다. 중간체가 많으면 중간 파일을 하나의 중간 파일로 연결 한 다음 untrusted플래그를 한 번 사용해야합니다 . 신뢰할 수없는 플래그를 여러 번 사용하면 작동하지 않습니다.
AjaxLeung

1
@AjaxLeung-여러 -untrusted옵션 (순서대로) 또는 -untrusted중간체 번들을 가리키는 단일 옵션 (순서대로 연결됨) 모두 작동합니다. 이것은 Ubuntu의 OpenSSL 버전 1.1.1c와 함께 제공됩니다.
garethTheRed

네, 착각 했어요 나는 의견을 쓸 때 올바른 파일을 사용하지 않았다고 생각합니다.
AjaxLeung

3

@ antiduh가 말한 것은 단일 중간 인증서 케이스에서만 작동합니다. -untrusted intermediate.pem명령에 둘 이상을 추가 해도 작동하지 않는 것 같습니다. 특정 openssl 버전과 관련이 있는지 확실하지 않습니다.

openssl 문서에 따르면 : [ https://linux.die.net/man/1/verify]

신뢰할 수없는 파일

신뢰할 수없는 인증서 파일. 파일은 여러 인증서를 포함해야합니다

내 경우에는 다음과 같은 체인이 있습니다. root.pem -> intermediate1.pem -> intermediate2.pem -> john.pem

cat intermediate1.pem & intermediate2.pem으로 단일 intermediate-chain.pem 파일로 만든 다음 openssl verify -CAfile root.pem -untrusted intermediate-chain.pem john.pem나를 위해 작동합니다.

또한 in ca 확장을 설정해야합니다. basicConstraints = CA:true그렇지 않으면 여전히 openssl verify 보고서 오류가 발생합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.