本文へスキップ
ecdsa.com

証明書チェーン

エンドエンティティ証明書(リーフ証明書)から 1 つ以上の中間 CA 証明書を経て信頼されたルートに至る、順序付けられた証明書の並びで、各証明書は次の証明書によって署名されています。
別表記chain of trustcertificate pathfullchainCA bundle

TLS サーバーは、最初にリーフ証明書を送り、続けて中間証明書を送らなければなりません(RFC 9846 §4.5.1 では残りの証明書の順序は任意ですが、古いクライアントは発行者の順序を前提としています)。ルート証明書は、クライアントがすでに持っているため通常は省略します。中間証明書の欠落は、「ブラウザーでは動くのに curl では失敗する」という典型的なエラーの原因です。ブラウザーは AIA の caIssuers URL から中間証明書を取得したり、キャッシュ済みの中間証明書を再利用したりすることがありますが、OpenSSL、Go、Java、ほとんどの API クライアントはそうしません。

クライアントは一覧をそのまま読むのではなく、パスを構築します。クロス署名された中間証明書があると有効なパスが複数存在しうるため、検証者は自分が信頼するルート証明書で終わるパスを選びます。Let's Encrypt が 2024年まで DST Root CA X3 によるクロス署名で古い Android デバイスを動作させ続けられたのはこの仕組みのおかげであり、ファイル内の順序よりも、必要な証明書がすべて揃っているかどうかのほうが重要なのもこのためです。

PEM バンドル(fullchain.pem)にはリーフ証明書と中間証明書が含まれます。PKCS #12 ファイルにも含めることができます。チェーン構築ツールはチェーンを並べ替えて欠けた証明書を補い、PEM バンドル分割ツールはバンドルを個々の証明書に分割します。

規格と参考文献

すべての用語