web-dev-qa-db-ja.com

SSLCACertificateFileとSSLCertificateChainFileの違い

WebサーバーでSSLページを提供していますが、質問があります。 SSLCACertificateFileとSSLCertificateChainFileの違いは何ですか?

SSLCertificateChainFileを使用すると、日本の携帯電話ブラウザから警告が表示されますが、PCブラウザ(IE、FFなど)を使用すると問題はありませんでした。一方、SSLCACertificateFileは両方のブラウザーで問題を引き起こしませんでした。

ブラウザがApacheに接続するときに違いはありますか?

71
nam

SSLCertificateChainFileは正しい選択オプションでしたが、このディレクティブは Apache 2.4.8で廃止 になりました。このディレクティブにより、リストされたファイルが、証明書とともに接続するクライアントに送信されます。

SSLCACertificateFile (以降「CACert」)はSSLCertificateChainFile(以下「Chain」)に優先し、さらに問題の証明書の使用を許可して署名client証明書。この種の認証は(少なくとも現時点では)非常にまれであり、使用していない場合、Chainの代わりにCACertを使用して機能を拡張する理由はありません。逆に、追加機能に害はない、とCACertはすべてのケースをカバーしていると主張することができます。両方の引数が有効です。

言うまでもありませんが、証明書のベンダーに問い合わせると、彼らは常にCACert over Chainをプッシュします。 ;)

70
BMDan

実際には、両方が有効なオプションである可能性があります。

SSLCertificateChainFileを使用して、公開認証局(VeriSign、RapidSSLなど)によって署名された証明書を公開します。

SSLCACertificateFileを使用して、クライアント証明書を発行でき、選択した一部のユーザーに配布できる「プライベート」CAを提供します。これらのclient証明書は、実際には認証(基本的なパスワード認証と比較して)に優れており、通常、パブリックCAによる配布は必要ありません(したがって、お金を節約できます)。

したがって、Webサイトの一部に安全な認証を追加する場合は、次の操作を行います。

<Directory /var/www/html/authorized>
  SSLVerifyClient require
  SSLVerifyDepth  5

  SSLOptions +StrictRequire
  SSLUserName SSL_CLIENT_S_DN_CN
  SSLRequireSSL
</Directory>

簡単な説明のためにSSLUserName SSL_CLIENT_S_DN_CNは、x509 '/ OU = Foo/CN = ...'サブジェクト全体に対して、認証されたユーザー名を証明書のCommonNameに設定します。

18