
Ich habe mehrere Client-Zertifikate, die mein Apache-HTTPD-Server von den Clients verlangt (erstellt nach den Anweisungen unterhttp://www.garex.net/apache/). Ich hätte gerne eine Authentifizierung, die auch nur ein Client-Zertifikat authentifiziert und zulässt, das mit einer Benutzername/Passwort-Kombination übereinstimmt.
Wenn ich beispielsweise zwei Client-Zertifikate mit CN user1
und user2
einer .htpasswd-Datei habe
user1:passwordA
user2:passwordB
Ich hätte gerne so etwas wie
SSLUserName %{SSL_CLIENT_S_DN_CN}
AuthName "Please enter your username and password"
AuthType Basic
AuthUserFile /path/.htpasswd
require valid-user
Allerdings führt dieser Versuch zu 500 Fehlern. Was kann ich tun?
Antwort1
Der Fehler 500 ist auf eine falsche Syntax zurückzuführen SSLUserName
– er sollte ohne Folgendes geschrieben werden %{...}
:
SSLUserName SSL_CLIENT_S_DN_CN
Wenn Sie aber tatsächlich eine Übereinstimmung zwischen Basisauthentifizierung und Zertifikatsname verlangen möchten, sollten Sie Folgendes entfernen SSLUserName
(damit es mod_ssl
nicht berührt wird REMOTE_USER
) und verwenden:
SSLRequire %{SSL_CLIENT_S_DN_CN} eq %{REMOTE_USER}
Eine andere Option, die möglicherweise besser funktioniert, wenn sie direkt in der Konfigurationsdatei verwendet wird (nicht in .htaccess
):
RewriteEngine on
RewriteCond %{SSL:SSL_CLIENT_S_DN_CN} !=%{LA-U:REMOTE_USER}
RewriteRule ^ - [F]