
Eu tenho vários certificados de clientes que meu servidor Apache httpd exige que os clientes tenham (feitos usando as instruções emhttp://www.garex.net/apache/). Gostaria de ter uma autenticação que também autenticasse e permitisse que apenas um certificado de cliente correspondesse a uma combinação de nome de usuário/senha.
Por exemplo, se eu tiver dois certificados de cliente com CN user1
e user2
arquivo .htpasswd
user1:passwordA
user2:passwordB
Eu gostaria de algo como
SSLUserName %{SSL_CLIENT_S_DN_CN}
AuthName "Please enter your username and password"
AuthType Basic
AuthUserFile /path/.htpasswd
require valid-user
No entanto, tentar isso resulta em 500 erros. O que posso fazer?
Responder1
O erro 500 é devido à SSLUserName
sintaxe errada – deve ser escrito sem %{...}
:
SSLUserName SSL_CLIENT_S_DN_CN
Mas, na verdade, se você quiser que a autenticação básica e o nome do certificado correspondam, você deve remover SSLUserName
(para que mod_ssl
não toque em REMOTE_USER
) e usar:
SSLRequire %{SSL_CLIENT_S_DN_CN} eq %{REMOTE_USER}
Outra opção que pode funcionar melhor quando usada diretamente no arquivo de configuração (não em .htaccess
):
RewriteEngine on
RewriteCond %{SSL:SSL_CLIENT_S_DN_CN} !=%{LA-U:REMOTE_USER}
RewriteRule ^ - [F]