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

おすすめ記事