openssl 및 OCSP

openssl 및 OCSP

스크립트에서 인증서 해지 여부를 확인하려고 하는데 다음 오류가 발생합니다.

unable to load certificate
140735258465104:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

단계는 다음과 같습니다(예: www.google.com 사용).

  1. 인증서 받기

    $ echo 'Q' | openssl s_client -connect www.google.com:443 > google.crt
    
  2. 발급자의 URI를 추출합니다.

    $ openssl x509 -in google.crt -text -noout | grep 'CA Issuers' | \
        sed -e "s/^.*CA Issuers - URI://
    

    이것은http://pki.google.com/GIAG2.crt

  3. 발급자 인증서 받기

    $ curl --silent http://pki.google.com/GIAG2.crt > issuer.crt
    
  4. OCSP URI 추출

    $ openssl x509 -in google.crt -ocsp_uri -noout
    

    이것은http://clients1.google.com/ocsp

이제 마지막 단계가 왔습니다.

$ openssl ocsp -no_nonce -issuer issuer.crt -cert google.crt \
      -url http://clients1.google.com/ocsp
unable to load certificate
140735258465104:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

내가 뭘 잘못했나요?

편집하다

http://pki.google.com/GIAG2.crt방금 DER 형식으로 되어 있는 것을 봤습니다 . PEM으로 변환

$ openssl x509 -inform DER -outform PEM -in issuer.der -out issuer.pem

한걸음 더 나아가자고 하지만

$ openssl ocsp -no_nonce -issuer issuer.pem -cert google.crt \
      -url http://clients1.google.com/ocsp
Error querying OCSP responder
140735258465104:error:27076072:OCSP routines:PARSE_HTTP_LINE1:server response error:ocsp_ht.c:255:Code=404,Reason=Not Found

이 오류는 의미가 있습니다.http://clients1.google.com/ocsp404를 제공하지만 URL은 원래 인증서에 저장된 URL입니다.

다음 질문은 발급자 인증서의 형식을 자동으로 감지하는 방법이지만 file파일이 바이너리인지 ASCII인지 확인하고 확인할 수 있습니다.

답변1

제목 을 설정해야 합니다 Host. 문서화되지 않은 명령줄 플래그가 있습니다. 노력하다:

openssl ocsp -no_nonce -issuer issuer.pem -cert google.crt \
    -url http://clients1.google.com/ocsp \
    -header Host clients1.google.com

관련 정보