質問は非常に明確ですが、オンラインで役立つチュートリアルは見つかりませんでした。ですから、ここで運がよければいいのですが。
基本的に、Apacheを使用してクライアント証明書認証を構築したいと思います。私がホストしているサイトのApacheのconfファイルを構成しました。私が置いたconfはここにあります:
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile /etc/Apache2/ssl/client.crt
ただし、クライアントの証明書とキーファイルを生成する方法はわかりません。また、Apacheサーバー構成のSSLCACertificateFileにはどのファイルを配置する必要がありますか?
サーバーは、クライアントから送信された証明書ファイルをサーバー上の証明書ファイルと単に比較しますか?クライアント証明書認証は正確には何をしているのですか?
CA証明書の作成方法と、このCA証明書によって署名された証明書の手順については、こちらをご覧ください http://pages.cs.wisc.edu/~zmiller/ca-howto/
次のようになります。
次に、クライアントがCAによって「署名」された証明書を提示することを確認できます。
SSLVerifyClientおよびその他のディレクティブを理解することが重要です。から TLSクライアント証明書認証に関する実際的な問題 (3ページ):
SSLVerifyClientのデフォルト値noneにはCCAは必要ありません。したがって、サーバーはCertificateRequestメッセージをTLSハンドシェイクに含めません。
値requireにはCCAが必要であるため、CertificateRequestメッセージはハンドシェイクに含まれます。クライアントがクライアントの証明書メッセージで証明書を提供しない場合、またはmod_sslが提供された証明書の検証に失敗した場合、TLSハンドシェイクは中止され、致命的なTLSアラートメッセージがクライアントに送信されます。
値optionalはrequireと同じですが、クライアントの証明書が空ですメッセージは許容されます。
最後の可能な値optional_no_caはoptionalと同じですが、さらに、信頼できるCAにチェーンされないクライアントの証明書を送信できるようにしますサーバー(OpenSSL [ 6 ]のバグのため、まだ有効ではないか期限切れの非自己署名クライアント証明書も受け入れられます)。
値optional_no_caを使用して、アプリケーションレベルで証明書を検証したり、X.509証明書を使用するPKIなしの公開鍵認証を実装したりできます公開鍵トランスポート。