Apache相互認証の設定

Apache相互認証の設定

特定のフォルダ/ファイルへのアクセスを保護するために相互認証を使用するようにApache Webサーバーを設定するように求められました。

この特定のファイル/フォルダへのアクセスは、クライアントが信頼できる自己署名クライアント証明書を送信した場合にのみ許可する必要があります。

Webサーバーで信頼できるCAが署名した有効な証明書でHTTPSを設定しました(簡単です)。

私はこのようなことをしたことがなく、どこから始めるべきか、それがうまくいくかどうかを確認する方法がわかりません。

また、クライアントが設定を開始するためにどのファイルを送信する必要があるのか​​わかりません。クライアントは、証明書署名に使用されたCAと一緒にクライアント証明書を送信する必要があると思います。これが最善のアプローチですか?

設定するのに役立ちますか?

ベストアンサー1

このトピックに関する複数のオンラインチュートリアルを確認できます。

デフォルトでは、TLSを正常に有効にしてからクライアント証明書を要求する認証ルールを追加します。

SSLVerifyClient require

これによりアクセスが失敗し、ブラウザはクライアントに利用可能な証明書から選択するように要求します。クライアントオペレーティングシステムまたはブラウザにインストールする必要があります。選択した証明書がクライアントにロードされると、自動的にサーバーに送信されます。

これで追加すると、SSLOptions +StdEnvVarsApacheは証明書から情報を抽出するように指示し、ユーザーを区別できるようになります。

これで、あなたの環境に貴重な情報があり、それを使用してアプリケーションまたはApache内で追加の認証を実行できます。

必要な環境変数は、おそらくSSL_CLIENT_S_<something>クライアントSSL_CLIENT_S_DN_CN証明書の一般名です。その後、必要に応じてクライアントのパラメータを制限できます。

SSLRequireSSL
SSLOptions  +StdEnvVars +ExportCertData +OptRenegotiate +FakeBasicAuth
SSLVerifyClient   require
SSLRequire %{SSL_CLIENT_I_DN_CN} eq "Issuer DN's Common Name"
       and %{SSL_CLIENT_S_DN_O}  eq "Subject DN's Organisation"
       and %{SSL_CLIENT_S_DN_CN} eq "Leonardo Serni"

@UlrichSchwarzが正しく指摘したように役員認証機関。それ以外の場合は、誰でも次の証明書に自己署名できます。何もない、そしてあなたは何も知りません。

したがって、独自のCAを作成して使用する必要があります。それ署名証明書を生成して顧客に配布します。

修正する:これ変数は(I)発行者に関連し、S認証するサブジェクト(クライアントなど)である(S)サブジェクトに関連します。完全なリストとその意味はマニュアルで確認できますmod_ssl

おすすめ記事