web-dev-qa-db-ja.com

SSLCertificateFileとSSLCertificateChainFileの違いは何ですか?

通常、仮想ホストでは、SSLは次のディレクティブで設定されます。

Listen 443 

SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt

From:複数の仮想ホストを持つサーバーで単一ドメインのSSLを有効にするために、この構成は機能しますか?

SSLCertificateFileSSLCertificateChainFileの違いは何ですか?クライアントはGoDaddyからCAキーを購入しました。 GoDaddyはSSLCertificateFileではなくSSLCertificateChainFile(.crtファイル)とSSLCertificateKeyFile(.keyファイル)のみを提供しているようです。

SslはSSLCertificateChainFileパスを指定しなくても動作しますか?

また、これらのファイルを配置する正規のパスはありますか?

36
chrisjlee

厳密に言えば、SSLが機能するためのチェーンは必要ありません。

あなたがいつもneedSSLCertificateFileであり、SSLCertificateKeyFileには正しいキーが含まれていますその証明書。

問題は、Apacheに与えるすべてが証明書である場合、接続しているクライアントに与える必要があるのは証明書だけであることです。これは、SSL証明書についての全体像を伝えていません。 「誰かの署名があるけど、それについてはお話しません」と言っている。

ほとんどのクライアントシステムにはCA証明書(ルートと中間の両方)の大規模なストアがあり、一致する署名関係をチェックして信頼を確立できるため、これは通常は正常に機能します。ただし、これが機能しない場合があります。ほとんどの場合、遭遇する問題は、証明書に署名した中間CAの証明書を保持していないクライアントです。

それがチェーンの出番です。これにより、Apacheはクライアントに信頼関係がどのように見えるかを正確に示すことができます。これにより、クライアントは、証明書、クライアントが信頼するルート、および知らない中間体の間の空白を埋めることができます。チェーンは、次の2つの方法のいずれかで構成に含めることができます。

  • SSLCertificateFileに設定したのと同じファイルに、サーバー証明書の後の新しい行に順番に埋め込まれます(ルートは一番下にある必要があります)。このように設定した場合は、SSLCertificateChainFileSSLCertificateFileとまったく同じファイルを指すようにする必要があります。
  • SSLCertificateChainFileディレクティブで構成された別のファイル。サーバーの証明書を発行したCA証明書がファイルの最初にあり、その後にルート上の他の証明書が続きます。

現在お持ちの証明書ファイルを確認してください-チェーンデータが含まれていないと思います。これは通常は正常に動作しますが、最終的には一部のブラウザーまたはその他で問題が発生します。

51
Shane Madden

ここでは、違いと、どちらを選択するかによる観察可能な影響についてのかなり良い説明を示します。

https://stackoverflow.com/questions/1899983/difference-between-sslcacertificatefile-and-sslcertificatechainfile

5
WerkkreW

実際、GoDaddyは中間チェーンを提供します。

http://support.godaddy.com/help/5238

もう少し議論します。

http://support.godaddy.com/help/868/what-is-an-intermediate-certificate

新しい証明書のダウンロード方法を説明するGoDaddyからのメールには、中間証明書ファイルに関する情報も含まれています。それは、おそらくあなたの目が言葉遣いからアップグレーズしてアップセルした後の、どこか下の方にあります。

適切なSSLCertificateChainFileディレクティブを含めない場合にどうなるかについては、サイトの証明書のチェーンをたどることができないため、SSLサイトはブラウザーで検証されないため、ブラウザーに大きな赤い警告が表示されます。ブラウザーが認識している認証局が所有する証明書。

4
cjc

SSLCertificateChainFileに関する以前の良い答えに加えて、そのファイル内の証明書の順序も重要であることを付け加えたいと思います。 OpenSSLベースのクライアントは自分自身で順序を整理しますが、gnutlsベースのクライアントは誤った順序でチェーンで失敗します。

次のようにgnutls-cliで順序をテストします

gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p https wwwsec.cs.uu.nl

/etc/ssl/certs/ca-certificates.crtは、ディストリビューションが結合した証明書を配置する場所です。

3