6

特定のクライアント証明書を信頼するように Apache httpd を設定するにはどうすればよいですか?

Web サービスへのアクセスを特定の (既知の) パートナーのサーバーに制限する必要があります。
これには CA ベースのソリューションを使用する予定でした (信頼できる CSR を受け入れた場合にのみ署名する信頼できる CA)。ただし、当社の CA は外部企業向けの証明書を作成しません。

とにかく安全な接続を確立するために、必要な PKI の準備が整うまで、特定のクライアント証明書を Apache httpd プロキシで信頼できるものとして構成したいと考えました。

ただし、httpd は、仮想ホスト用に構成された CACertificateFile (Base64 および DER 形式 (PEM) でエンコードされた連結 x509 証明書) に追加されたクライアント証明書を使用して接続しようとするクライアントによる接続を受け入れません。

この場合、クライアント証明書は自己署名証明書ではありません。

4

1 に答える 1

5

サーバーがクライアント証明書を要求するようにするには、またはを介して信頼するCA証明書を構成し、使用する(または、ではなく、認証を実行しないSSLCACertificateFile)必要SSLCACertificatePathSSLVerifyClientありoptionalますrequiredoptional_no_ca

SSLVerifyClientセクション内で直接使用する場合VirtualHost、クライアント証明書は最初のハンドシェイク中に送信されます。Directory/内に入れると.htaccess、クライアント証明書が再ネゴシエートされます。

クライアント証明書自体は暗号化されないため、最初のハンドシェイクで証明書が送信されるときにデバッグする方が簡単です。Certificate(クライアントから送信されたメッセージで)Wiresharkのトラフィックを確認することで確認できるはずです。デバッグするときCertificate Requestは、サーバーからメッセージが送信されていることを確認し、その証明機関のリストを確認することをお勧めします。

問題の一般的な原因は、そのリストを認識しないクライアント、または必要に応じてチェーン内の中間CA証明書を送信しないクライアントです。

その後、特定の証明書をより具体的に承認する場合は、可変SSL変数(たとえばSSL_CLIENT_S_DN_*)をチェックして、SSLRequireディレクティブで使用できます(例を参照

于 2012-11-14T18:52:18.423 に答える