chain.pem ファイルの目的は何ですか?

chain.pem ファイルの目的は何ですか?

chaim.pemファイルに関する一般的な質問です。ホストから取得したcsrを使用し、LetsEncryptのCertbotを使用してhttps証明書を生成しました。次のコマンドを使用しました。

$ certbot certonly --manual --csr ファイル with my-csr.txt

certbot は 3 つのファイル 0000_cert.pem、0000_chain.pem、0001_chain.pem を生成しました。次に、cert.pem ファイルを使用して証明書をホストに再度インストールしました。すべてがスムーズに機能しました。

私の質問は、「チェーン」ファイルはどこにも使用していないので、何のために使用されるのかということです。どのようなシナリオで役立つのでしょうか?

答え1

Certbot の出力は少し変わっています。複数の個別のファイルではなく、すべてが正しい順序で含まれた「fullchain.pem」ファイルを受け取るはずです。

(手動インストール自体は言うまでもなく、これを自動化する必要があります。)

私の質問は、「チェーン」ファイルは何のために使用されるのかということです

すべての WebPKI 認証局には、少なくとも 2 層システムがあります。

  1. オフラインで安全に保存されるルート CA 証明書は、中間 (発行) CA 証明書に署名します。
  2. オンラインで保存される中間 CA は、サーバー (エンド エンティティ) 証明書に署名します。

例えば、これは図です暗号化しましょうその階層は通常次のようになります。

Root: "DST Root CA X3" (or possibly "ISRG Root X1")
\-- Issuing: "Let's Encrypt R3"
    \-- End-entity: "letsencrypt.org"

ほとんどのTLSクライアント(ブラウザ、オペレーティングシステム)には、証明書は事前にインストールされています。これにより、CA がインフラストラクチャを変更するたびに更新する必要はなく、CA 自体が追加または削除された場合にのみ更新する必要があります。

ただし、各証明書の署名を検証するには、必要直前の証明書を持っていること (たとえば、ルート CA だけを使用してサーバー証明書の署名を直接検証することはできません。2 つの間には直接的な暗号化関係はありません)。

つまり、ルート CA 間のチェーンを完了するには、クライアントがすべての中間証明書を持っている必要があります。中間証明書のいずれかが欠落していると、クライアントは残りの証明書を検証するのに十分な情報を持っていません。

HTTPSの場合、主要な方法は、サーバーにチェーン証明書をすべて送信させることです。サーバーは既にチェーン証明書を持っているはずなので。

一部の Web ブラウザには、このための代替メカニズムがあります。たとえば、Firefox は「以前に表示された」中間ファイルのキャッシュを保持しますが、Windows は証明書内の AIA URL を使用して中間ファイルをダウンロードしようとします。

しかし、すべてのブラウザがこれを実行するわけではなく、重要なことに、ほとんどの非Web TLSクライアントはしないそのような代替手段はまったくありません。不完全なチェーンは HTTPS では機能することが多いですが、SMTP や IRC などでは機能しません。

その後、cert.pemファイルを使用して証明書をホストに再度インストールしました。すべてスムーズに動作しました。

おそらく、それはいくつかのユーザー (主に Windows と Firefox) は満足していますが、他の多くのユーザーは除外されています。自分のシステムで動作するからといって、他のすべてのシステムでも動作するとは限りません。

次のようなツールSSLラボまたは、gnutls-cli example.com:443サーバーが完全なチェーンを送信しない状況について警告します。

しかし、「あなたのホスト」がAIA情報から中間ファイルをプロアクティブにダウンロードしている可能性もある(WindowsのIISが原因かもしれないと少し疑っている)。5月誰かがこれをやっているとすれば、自動的に空白を埋めることになります。しかし、もしどこかでそれが行われているとしたら、それは非常に稀です。

通常のCertbotの使用

通常、Certbot は受信した証明書を「すぐに使用できる」形式でフォルダーに保存します/etc/letsencrypt/live。fullchain.pem にはホストの証明書と必要な親証明書が含まれます。たとえば、Apache httpd 2.4.x では、次のように使用します。

SSLCertificateFile    /etc/letsencrypt/live/example.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.net/privkey.pem

答え2

簡単な説明はここ

まず、PEM とは何でしょうか。

PEM は、暗号化キーを保存するためによく使用されるコンテナ ファイル形式です。これは、少量のデータを保存するために使用されるファイルの構造とエンコード タイプを定義するだけなので、さまざまな用途に使用されます。

PEM ファイルとは何ですか?

PEM は単なる標準です。テキストが含まれており、その形式では PEM ファイルは次のように始まります...

SSL 証明書で使用される PEM ファイル:

SSL 証明書付き PEM ファイル

PEM ファイルは、SSL 証明書とそれに関連付けられた秘密鍵を保存するために使用されます。完全な SSL チェーンには複数の証明書があり、次の順序で機能します。

エンドユーザー証明書は、証明機関 (CA) によってドメイン名に割り当てられます。これは、nginx および Apache で HTTPS を暗号化するために使用するファイルです。最大 4 つのオプションの中間証明書は、上位の証明機関によって下位の証明機関に付与されます。ルート証明書は、チェーンの最上位の証明書であり、プライマリ CA によって自己署名されます。

では、chain.pem とは何でしょうか?

chain.pemはチェーンの残りの部分です。この場合は、LetsEncryptのルート証明書のみです。

ファイルchain.pemには中間証明書が含まれています。

SSL証明書をインストールするときは、サイト証明書だけでなく中間証明書もインストールする必要があります。重要なものがあります。ここ:

中間証明書はルート証明書の代わりとして機能します。ルート証明書には独自のセキュリティ レイヤーがあり、キーが取得できないようにするためです。中間証明書は、エンド エンティティ証明書とルート証明書の間の「信頼のチェーン」として機能します。

そしてここ:

すべての主要な証明機関は、追加のセキュリティ レベルのために中間証明書を使用しています。これにより、誤発行やセキュリティ イベントが発生した場合の被害を最小限に抑え、区分化することができます。ルート証明書と、その証明書が署名したすべての証明書を取り消すのではなく、中間証明書を取り消すだけで済みます。これにより、その中間証明書から発行された証明書のグループが信頼されなくなります。

関連情報