Apache2 und Client-Zertifikate
Hallo,
ich versuche mich gerade an eine Apache2 (Debian/Sarge) Installation die
_optional_ über Client-Zertifikate authentifiziert.
Folgendermassen sieht meine derzeitige Konfiguration aus:
#Server CA-Chain
SSLCertificateChainFile /etc/apache2/globalsign.pem
#Server Zertifikat
SSLCertificateFile /etc/apache2/servercert.pem
#Server Zertifikat-Key
SSLCertificateKeyFile /etc/apache2/servercert.pem
#CAs der Clients-Auth
SSLCACertificateFile /etc/apache2/ClientServerCA.chain.pem
SSLCARevocationFile /etc/apache2/ClientServerCA-crl.pem
SSLVerifyDepth 2
SSLOptions +StdEnvVars
SSLEngine on
in der zentralen httpd.conf
und anschliessend in einer virtual Host Config:
<VirtualHost *>
ServerName <DOMAIN>
Documentroot <PATH>
CustomLog /www/logs/<DOMAIN>.log "%v %h %l %u %t
\"%r\" %>s %b %{SSL_PROTOCOL}x %{SSL_CIPHER}x %{SSL_CLIENT_S_DN_CN}x"
<Directory <PATH>/smartcard>
SSLRequireSSL
SSLVerifyClient require
</Directory>
SSLUserName SSL_CLIENT_S_DN_CN
</VirtualHost>
Mein Problem ist folgendes, ich möchte eigentlich "SSLVerifyClient
optional" haben.
Leider wird bei Optional das Client-Zertifikat (konqueror fragt nach und
ich erlaube das Senden) einfach vom Server ignoriert.
Ebenfalls ignoriert wird es, wenn ich die "SSLVerifyClient require"
Option nicht in das <Directory> verpacke, sondern nur im VirtualHost
mit drin habe. Das sieht mir dann eigentlich nach einem Bug aus, denn
laut Dokumentation ist SSLVerifyClient innerhalb der VirtualHost Config
auch erlaubt.
Zusätzlich würde ich gern Revoked Zertifikate nicht direkt abweisen,
sondern über die SSL_CLIENT_VERIFY Variable in der benutzten
Skriptsprache erkennen und normale Login/Password Authentifizierung
anbieten. Dafür habe ich bisher allerdings noch keine Option gefunden.
Der Apache bricht die Verbindung zum Client dann jedenfalls einfach ab.
Jemand eine Idee dazu?
--
Markus Schulz - msc@antzsystem.de
Reply to: