Wie fordere ich in Apache Client-Zertifikate mit einem bestimmten Benutzernamen/Passwort an?

Wie fordere ich in Apache Client-Zertifikate mit einem bestimmten Benutzernamen/Passwort an?

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 user1und user2einer .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_sslnicht 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]

verwandte Informationen