Como eu solicito certificados de clientes com um nome de usuário / senha específicos no Apache?

3

Tenho vários certificados de clientes que o meu servidor httpd Apache exige que os clientes tenham (feito usando as instruções no link ). Eu gostaria de ter uma autenticação que também autentica e permite que apenas um certificado de cliente corresponda a uma combinação de nome de usuário / senha.

Por exemplo, se eu tiver dois certificados de cliente com CN user1 e user2 e 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?

    
por cm007 29.11.2011 / 06:52

1 resposta

4

O erro 500 é devido à sintaxe incorreta SSLUserName - deve ser escrito sem %{...} :

SSLUserName SSL_CLIENT_S_DN_CN

Mas, na verdade, se você quiser exigir que a autenticação básica e o nome do certificado correspondam, remova SSLUserName (para que mod_ssl não toque em REMOTE_USER ) e use:

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]
    
por 29.11.2011 / 07:07