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

エラーメッセージ

unable to load certificate

OpenSSL 1.1.x の文言です。OpenSSL 3.0 は「Could not read certificate from cert.pem」に続けて、先頭が大文字の U の「Unable to load certificate」を出力します。OpenSSL 3.5 以降は「Could not find certificate from cert.pem」に加えて、STORE routines のスタック行を出力します(3.0.2 と 3.6.4 で再現)。文言はバージョンによって異なりますが、失敗の内容は同じです。

このエラーの意味

openssl x509(または証明書を読み込む別のコマンド)は、ファイルから証明書を解析できませんでした。入力が別の PEM オブジェクト(鍵、CSR)であるか、バイナリのエンコーディングが違うか、そもそも X.509 構造ではないテキストであるかのいずれかです。コマンドはフィールドを読む段階まで進んでいません。証明書ファイルにはエンコーディングに関係なく .crt や .cer という名前が付けられるため、ここではファイル名から何もわかりません。手がかりになるのはバイト列だけです。

発生する理由

修正方法

  1. 1.

    種類を特定してから変換する

    ラベルまたは先頭のバイトを確認し、必要に応じて DER を PEM に変換してください。

    bash
    head -1 cert.file          # BEGIN what?
    openssl x509 -inform der -in cert.der -out cert.pem   # DER → PEM
  2. 2.

    コンテナー形式を展開する

    PKCS#7 や PKCS#12 のバンドルから証明書を取り出し、通常の PEM にしてください。

    bash
    openssl pkcs7 -print_certs -in bundle.p7b -out certs.pem
    openssl pkcs12 -in bundle.pfx -clcerts -nokeys -out cert.pem
  3. 3.

    CSR には req コマンドを使う

    ファイルが署名要求の場合は、req で内容を確認してください。また、証明書になるには、まだ CA による署名が必要であることも忘れないでください。

    bash
    openssl req -in request.csr -noout -text

関連するエラー

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