
私のApache httpdサーバーではクライアントにいくつかのクライアント証明書が必要です(以下の手順に従って作成しました)。http://www.garex.net/apache/)。ユーザー名とパスワードの組み合わせに一致するクライアント証明書のみを認証して許可する認証も用意したいと思っています。
たとえば、CNuser1
とuser2
.htpasswdファイルを持つ2つのクライアント証明書がある場合
user1:passwordA
user2:passwordB
私は次のようなものを希望します
SSLUserName %{SSL_CLIENT_S_DN_CN}
AuthName "Please enter your username and password"
AuthType Basic
AuthUserFile /path/.htpasswd
require valid-user
しかし、これを実行すると 500 エラーが発生します。どうすればよいでしょうか?
答え1
エラー 500 はSSLUserName
構文が間違っているために発生します%{...}
。次の記述は不要です。
SSLUserName SSL_CLIENT_S_DN_CN
しかし、実際には、基本認証と証明書名が一致することを要求したい場合は、 を削除してSSLUserName
( がmod_ssl
影響しないようにREMOTE_USER
)次を使用する必要があります。
SSLRequire %{SSL_CLIENT_S_DN_CN} eq %{REMOTE_USER}
設定ファイル内で直接( 内ではなく.htaccess
)使用するとより適切に機能する可能性がある別のオプション:
RewriteEngine on
RewriteCond %{SSL:SSL_CLIENT_S_DN_CN} !=%{LA-U:REMOTE_USER}
RewriteRule ^ - [F]