SSLCertificateFileとSSLCertificateChainFileの違いは?


35

通常、仮想ホストでは、次のディレクティブを使用してsslがセットアップされます。

Listen 443 

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

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

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

SSLCertificateChainFileパスが指定されていなくてもSSLは機能しますか?

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


1
最も一般的に私は、人々は証明書ファイルを置く見る場所である/etc/ssl/usr/local/etc/sslまたはにsslウェブサイトへのサブディレクトリの特定(例えば/home/www/example.com/data、ウェブサイトが、その後たhome/www/example.com/ssl本命を持っています)。
クリスS

回答:


49

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

あなたが常に必要なことであるSSLCertificateFileSSLCertificateKeyFile、その証明書の正しいキーを含みます。

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

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

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

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

現在持っている証明書ファイルを確認してください-チェーンデータが含まれていないことは間違いありません。これは通常は正常に動作しますが、最終的には何らかのブラウザで問題が発生します。


2
中間体が含まれていない場合、「通常は正常に動作します」はGoDaddy証明書には実際には適用されないと思います。VerisignやThawteのような人にそれが適用されるかどうかは、実際のところ、ブラウザに含まれるベース証明書からサイト証明書を遠ざけるために移動したので、私にもわかりません。中間体を殺す方が簡単なので、取り消しが簡単になると思います。
cjc

「SSLCertificateFileに埋め込まれています」:これが機能することを望んでいましたが、そうは思われず、ドキュメントには記載されていません。あなたのチェーンを入れる必要がありSSLCertificateChainFileます。
スティーブケレット

@SteveKehletあなたはそれが文書化されていないことは正しいですが、私はそれが過去に正常に動作してきました-オールインワンファイルをどのようにフォーマットしましたか?
シェーンマッデン

1
@SteveKehlet実際、あなたは正しい、私は間違ったことを思い出した。単一のファイルに設定する方法は、両方を持ち、同じ結合ファイルSSLCertificateFileSSLCertificateChainFile指し示すことでした。これは動作します-私の答えを編集して修正しました。
シェーンマッデン

@ShaneMadden Beautiful!できます!それを理解してくれてありがとう。
スティーブケレー


4

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

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

ここでもう少し議論します。

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

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

適切なSSLCertificateChainFileディレクティブを含めないと何が起こるかという点では、SSLサイトはブラウザーで検証されないため、ブラウザーの大きな赤い警告が表示されます。ブラウザが知っている認証局が所有する証明書。


2

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は、ディストリビューションが組み合わせた証明書を配置する場所です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.