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

エラーメッセージ

verify error:num=26:unsuitable certificate purpose

別の表記

  • Verify return code: 26 (unsuitable certificate purpose)
  • error 26 at 0 depth lookup: unsuitable certificate purpose

s_client は「verify error:num=26:…」と「Verify return code: 26 (…)」を出力し、openssl verify は「error 26 at <depth> depth lookup: unsuitable certificate purpose」と出力します。Go は同じ問題を「x509: certificate specifies an incompatible key usage」として報告します。

OpenSSL CLI (openssl s_client / openssl verify -purpose) — X509_V_ERR_INVALID_PURPOSE

このエラーの意味

OpenSSL のエラー 26(X509_V_ERR_INVALID_PURPOSE)は、チェーンはほかの点では有効なものの、ある証明書の拡張が、チェック対象の用途を許可していないことを示します。s_client はサーバー証明書を TLS サーバーの用途でチェックするため、extendedKeyUsage に clientAuth(または emailProtection)しか含まれていない証明書は失敗します。openssl verify は、-purpose で指定した用途をチェックします。

発生する理由

修正方法

  1. 1.

    用途を定める拡張を確認する

    extendedKeyUsage、keyUsage、basicConstraints から、その証明書を何に使ってよいかがわかります。openssl verify -purpose を使うと、特定の用途をチェックできます。

    bash
    openssl x509 -in server.pem -noout -ext extendedKeyUsage,keyUsage,basicConstraints
    # Check against the purpose you need: sslserver, sslclient, smimesign, ...
    openssl verify -CAfile root.pem -purpose sslserver server.pem
  2. 2.

    正しい用途で再発行する

    TLS サーバー証明書には、extendedKeyUsage の serverAuth(この拡張がある場合)と、keyUsage の digitalSignature が必要です。

    bash
    openssl req -new -key server.key -out server.csr -subj "/CN=api.example.com" \
      -addext "subjectAltName=DNS:api.example.com" -addext "extendedKeyUsage=serverAuth"

関連するエラー

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