サーバーの CA 以外の CA によって署名された証明書を持つ HTTPS クライアントを検証する

サーバーの CA 以外の CA によって署名された証明書を持つ HTTPS クライアントを検証する

信頼できる公式 CA によって署名されたサーバー証明書を持つ Apache Web サーバーと SSL があります。サーバー証明書に署名した CA 以外の CA によって署名された有効な証明書を持つクライアントを受け入れるように Apache SSL を設定できますか?

ssl_error_unknown_ca_alertApache で他の CA を設定し、サーバーがエラーなしで起動したにもかかわらず、エラーが 発生します。サーバー証明書に署名した CA の CA 証明書と、信頼したい CA の他の CA 証明書を含むファイルを作成しました。次に、SSLCertificateChainFileこのファイルにディレクティブを指定しました。

私はApache 2.2.22を使用しています

編集:

私は、
SSLCertificateFileサーバー証明書を指し
SSLCertificateKeyFile、サーバーキーを指し、
SSLCertificateChainFileサーバー証明書に署名した証明書チェーンを指し、
SSLCACertificateFile受け入れたいすべての証明書チェーンを含むファイルを指しています。

SSLVerifyClient require
SSLVerifyDepth  1

サーバーを再起動すると、Apache はログでそれらすべてを認識し、エラーは発生しません。それでも、エラーが発生します。Meld でテキストを比較してssl_error_certificate_unknown_alert、クライアント証明書チェーンが存在することも確認しましたSSLCACertificateFile

答え1

問題が分かりました。証明書は 3 つの CA のチェーンによって署名されており、SSLVerifyDepth を 1 に設定しました。これを 10 に設定すると、動作しました。

答え2

使用したい証明書を含むディレクトリが必要だと思います。証明書のシンボリックリンクを作成するには、SSLマジックを使用する必要があるかもしれません。mod_ssl SSLCACertificatePath の適切な使用法、または複数の許容可能なクライアント証明書 CA を処理するための最良の方法は何ですか必要なコマンドについては。

関連情報