¿Cómo necesito certificados de cliente con un nombre de usuario/contraseña específico en Apache?

¿Cómo necesito certificados de cliente con un nombre de usuario/contraseña específico en Apache?

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 user1y user2un 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 SSLUserNameuna 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_sslno 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]

información relacionada