Reverse Proxy mit Certificate Authentication

Alles, was den Apache betrifft, kann hier besprochen werden.

Reverse Proxy mit Certificate Authentication

Postby wurstsalat » 12. October 2014 18:01

Hallo zusammen,

ich habe ein Problem bei der Konfiguration eines Reverse Proxy und hoffe, dass mir hier jemand helfen kann.

Folgendes Szenario:
Ich möchte mich an einem Webserver per X509 Client Zertifikat authentifizieren, und diese Anmeldung muss über einen Reverse Proxy laufen.
Das Problem ist, dass ich es nicht schaffe, dass Apache mein Zertifikat an den Backend Webserver weiterreicht.

Der Apache in der Version 2.4.10 läuft auf einem Windows 2008 R2 Server, die folgenden Proxy Module sind enabled:
Code: Select all
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule proxy_http_module modules/mod_proxy_http.so


Sowie das SSL-Modul:
Code: Select all
LoadModule ssl_module modules/mod_ssl.so


Hier mal meine Config:
Code: Select all
Listen 8443
<VirtualHost _default_:8443>
    ServerName mein.server.de
    ServerAlias mein.server.de

    SSLEngine on
   # Start Webserver Certificate Part
    SSLCertificateFile "C:/Apache24/conf/certs/mein-server.crt"
    SSLCertificateKeyFile "C:/Apache24/conf/certs/mein-server.key"
    # END Webserver Certificate
   
    # Start Client Certificate Auth Part
    SSLCACertificateFile "C:/Apache24/conf/certs/USER_CA.crt"
    SSLVerifyClient require
    SSLVerifyDepth 2
    # End Client Certificate
   
    ProxyRequests Off
   SSLProxyEngine on
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
   
    ProxyPass /target https://target
    ProxyPassReverse /target https://target

    RequestHeader set  SSL_CLIENT_CERT ""
    RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"
</VirtualHost>                                 


Das Client-Zertifikat wird aber nicht an den Backend-Webserver weitergeleitet, ich bekomme immer einen Error 500.
Error during SSL Handshake with remote server

Über Hilfe würde ich mich sehr freuen.
wurstsalat
 
Posts: 3
Joined: 12. October 2014 17:14
Operating System: Windows

Re: Reverse Proxy mit Certificate Authentication

Postby Nobbie » 13. October 2014 12:17

siehe https://thomas-leister.de/internet/apac ... inrichten/

(hat mich 1 Minute Google gekostet!).
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Reverse Proxy mit Certificate Authentication

Postby wurstsalat » 13. October 2014 18:52

Der Proxy funktioniert ja bei Zielservern ohne Clientzertifikatsauthentifizierung, nur das Clientzertifikat wird nicht durchgereicht und der Zielserver (IIS) läuft mit Clientzertifikatsauthentifizierung.
Das ist das Problem.

Ich sehe aber gerade, dass bei der Config die du gepostet hast der Parameter SSLCertificateChainFile gesetzt ist, der fehlt bei mir.
Als SSL-Novize weiss ich leider nicht, was da rein muss und die Apache-Doku verstehe ich nicht so wirklich.

Ich habe ein CA-Zertifikat (.crt), nennen wir es CA_A, das die Server (Apache und Backend IIS Server) authentifiziert, und ein anderes CA-Zertifikat (.crt), nennen wir es CA_B, das die User auf dem Backend authentifiziert.
Dann eben das Serverzertifikat für den Apache (.crt und .key), ausgegeben von A, welches in der Config unter

Code: Select all
    SSLCertificateFile /etc/myssl/server.crt
    SSLCertificateKeyFile /etc/myssl/server.key


eingetragen ist.

Im Browser ist das von CA_B ausgegebene Zertifikat importiert.

Ist das fehlende Chainfile der Knackpunkt? Und wenn ja, wie erzeuge ich das?

Sorry, falls das blöde Fragen sind, aber ich bin wie gesagt kein PKI-Profi.
wurstsalat
 
Posts: 3
Joined: 12. October 2014 17:14
Operating System: Windows

Re: Reverse Proxy mit Certificate Authentication

Postby Nobbie » 13. October 2014 19:48

Weiß ich nicht, aber ich würde auch nicht auf die Idee kommen, ohne jegliche Kenntnisse einen eigenen Server zu betreiben. Ich würde vermuten, dass ein Zertifikat nicht durchgereicht werden kann, weil das sinnlos ist, denn Zertifikate müssen zum Servernamen passen und das ist ja gar nicht der Fall.

Du solltest mal ausprobieren, auf dem Reverse Proxy ein eigenes Zertifikat zu installieren.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Reverse Proxy mit Certificate Authentication

Postby wurstsalat » 13. October 2014 20:20

Beide Server, der Apache und der IIS laufen nur im Intranet und nicht im Internet.
Und der Apache soll nur dem Zweck dienen das CORS-Problem zu lösen das man hat, wenn man Ajax-Calls auf einen anderen Server ausführt als den eigenen.

Wie geschrieben werden die Clients über eine eigene CA authentifiziert, also macht das Durchreichen des Client-Zertifikats sehr wohl Sinn.
Und der Reverse Proxy hat ein eigenes Server-Zertifikat, welches von einer anderen CA authentifiziert wird.

Bei einem SAP Backend funktioniert das Durchreichen ja auch über die Parameter

RequestHeader set SSL_CLIENT_CERT ""
RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"

wenn sich der Client vorher am Reverse Proxy authentifiziert hat. Nur eben nicht bei einem IIS,
wurstsalat
 
Posts: 3
Joined: 12. October 2014 17:14
Operating System: Windows


Return to Apache

Who is online

Users browsing this forum: No registered users and 23 guests