本文へスキップ
ecdsa.com
OpenSSL 3.x CLI (openssl s_client / openssl verify)OpenSSL CLI

エラーメッセージ

verify error:num=79:invalid CA certificate

別の表記

  • error 79 at 1 depth lookup: invalid CA certificate

OpenSSL 3.0.13 と 3.5.7 は、どちらもこのケースをエラー 79 として報告します(古い資料では「invalid CA certificate」がエラー 24 として記載されていますが、エラー 24 自体はほかの CA のチェック用に現在も存在します)。s_client は同じ証明書に対してエラー 26「unsuitable certificate purpose」も出力し、サマリー行には最後に出力されたこのコードが表示されます。

OpenSSL 3.x CLI (openssl s_client / openssl verify) — X509_V_ERR_INVALID_CA

このエラーの意味

OpenSSL のエラー 79(X509_V_ERR_INVALID_CA)は、チェーン内で発行者の位置にある証明書が、有効な CA 証明書ではないことを示します。basicConstraints が CA:FALSE になっているかそもそも存在しない、または keyUsage が証明書への署名を許可していない状態です。openssl verify のメッセージにある depth が、問題の証明書を示します(1 が最初の中間証明書です)。

発生する理由

修正方法

  1. 1.

    報告された depth の証明書を確認する

    basicConstraints は CA:TRUE(critical)でなければならず、keyUsage には keyCertSign が含まれていなければなりません。

    bash
    # The certificate at the depth named in the error must be a CA
    openssl x509 -in int.pem -noout -subject -ext basicConstraints,keyUsage
  2. 2.

    中間証明書を CA として再発行する

    CA 用の拡張を付けて署名し直してください。鍵とサブジェクトが変わらなければ、その中間証明書が発行した証明書は引き続き有効です。

    bash
    printf 'basicConstraints=critical,CA:TRUE,pathlen:0\nkeyUsage=critical,keyCertSign,cRLSign\n' > ca.ext
    openssl x509 -req -in int.csr -CA root.pem -CAkey root.key -days 1825 -extfile ca.ext -out int.pem

関連するエラー

署名エラーデータベースをすべて見る