
Tengo varios certificados de clientes que mi servidor Apache httpd requiere que los clientes tengan (realizados siguiendo las instrucciones enhttp://www.garex.net/apache/). Me gustaría tener una autenticación que también autentique y permita que solo un certificado de cliente coincida con una combinación de nombre de usuario y contraseña.
Por ejemplo, si tengo dos certificados de cliente con CN user1
y user2
un archivo .htpasswd
user1:passwordA
user2:passwordB
me gustaría algo como
SSLUserName %{SSL_CLIENT_S_DN_CN}
AuthName "Please enter your username and password"
AuthType Basic
AuthUserFile /path/.htpasswd
require valid-user
Sin embargo, intentar esto produce 500 errores. ¿Qué puedo hacer?
Respuesta1
El error 500 se debe a SSLUserName
una sintaxis incorrecta; debe escribirse sin %{...}
:
SSLUserName SSL_CLIENT_S_DN_CN
Pero, en realidad, si desea exigir que la autenticación básica y el nombre del certificado coincidan, debe eliminar SSLUserName
(para que mod_ssl
no se toque REMOTE_USER
) y usar:
SSLRequire %{SSL_CLIENT_S_DN_CN} eq %{REMOTE_USER}
Otra opción que podría funcionar mejor cuando se usa directamente en el archivo de configuración (no en .htaccess
):
RewriteEngine on
RewriteCond %{SSL:SSL_CLIENT_S_DN_CN} !=%{LA-U:REMOTE_USER}
RewriteRule ^ - [F]