我有几个客户端证书,我的Apache httpd服务器要求客户端(使用http://www.garex.net/apache/上的说明)。 我想有一个身份validation,也进行身份validation,并只允许客户端证书匹配用户名/密码组合。
例如,如果我有两个客户端证书与CN user1
和user2
和.htpasswd文件
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错误。 我能做什么?
错误500是由于错误的SSLUserName
语法 – 它应该写入没有%{...}
:
SSLUserName SSL_CLIENT_S_DN_CN
但实际上如果你想要基本的authentication和证书名称匹配,你应该删除SSLUserName
(这样mod_ssl
不会碰到REMOTE_USER
)并使用:
SSLRequire %{SSL_CLIENT_S_DN_CN} eq %{REMOTE_USER}
在configuration文件中直接使用(不在.htaccess
)时可能会更好的工作的另一个选项:
RewriteEngine on RewriteCond %{SSL:SSL_CLIENT_S_DN_CN} !=%{LA-U:REMOTE_USER} RewriteRule ^ - [F]