Ich versuche, einen Teil eines Virtualhost
In-Apache so einzurichten, dass eine Clientauthentifizierung erforderlich ist. Der VirtualHost
betreffende Server fungiert auch als Reverse-Proxy für den eigentlichen Webserver. Folgendes habe ich getan:
- Erstellt
ca.crt
,ca.csr
undca.key
auf dem Server ich als CA. bin mit - Die Konfiguration des wurde so geändert
VirtualHost
, dass sie folgendermaßen aussieht:
...
ProxyPass / http://xxx.xxx.xxx.xxx:80/
ProxyPassReverse / http://xxx.xxx.xxx.xxx:80/
ProxyPassReverseCookiePath / /
SSLEngine On
SSLCertificateFile "/private/etc/apache2/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/server.key"
SSLCertificateChainFile "/private/etc/apache2/ca_bundle.crt"
SSLCACertificateFile "/private/etc/apache2/self_ca.crt"
SSLVerifyClient none
SSLOptions StrictRequire
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
<Location /clientauth>
# These options force the client to authenticate with a client certificate.
SSLVerifyClient require
SSLVerifyDepth 1
</Location>
- Erstellt ein Testclient-Zertifikat mit meiner benutzerdefinierten Zertifizierungsstelle.
- Installierte das Client-Zertifikat im Login-Schlüsselbund unter Mac OS X Lion und manuell in Firefox.
Aber ich kann nicht zum /clientauth
Pfad navigieren .
- Laut Firefox konnte der SSL-Peer keinen akzeptablen Satz von Sicherheitsparametern aushandeln.
- Opera sagt "Sichere Verbindung: Schwerwiegender Fehler (40) vom Server."
- Chrome und Safari sagen "HTTP 403 Forbidden".
- cURL (mit der .p12-Datei) kann den Schlüssel aus irgendeinem Grund nicht finden ...
- cURL (unter Verwendung der Dateien .crt und .key) führt den Handshake durch, sendet die Anforderung und sagt dann "Leere Antwort vom Server".
- Die Apache-Fehlerprotokolle wiederholen die Zeile immer wieder
Re-negotiation handshake failed: Not accepted by client!?
Ist dies ein Konflikt zwischen der Verwendung der Clientauthentifizierung und der Verwendung eines Reverse-Proxys? Oder habe ich etwas anderes falsch gemacht?