2013-10-10 11 views
15

Hintergrundinformationen zu ignorieren: (Frage unten)Ist es möglich, ein Apache proxy'd Zertifikat

Ich versuche, an einen Client zu verbinden, die 8 Server, die alle von denen eindeutige IP-Adressen haben. Der Client verwendet auf allen Servern das gleiche SSL-Zertifikat (für dieses Beispiel ist der Zertifikatsname == www.all_servers.com). Der Client lässt eingehende Anfragen nur über https zu.

Ich versuche, einen Apache-Proxy mit mod_proxy zu erstellen, die verschiedene URI-Zuordnungen zu verschiedenen Servern zuordnet. Zum Beispiel:

https://PROXY_SERVER/SERVER1/{REQUEST} 

Dies würde {REQUEST} senden

https://PROXY_SERVER/SERVER2/{REQUEST} 

an Server1 würde senden {REQUEST} zu server2. Bis jetzt, ziemlich einfach. !

SSLProxyEngine On 

ProxyPass /server1 https://1.1.1.1/ 
ProxyPassReverse /server1 https://1.1.1.1/ 

ProxyPass /server2 https://1.1.1.2/ 
ProxyPassReverse /server2 https://1.1.1.2/ 

Dies war auf Apache 2.2 nicht überprüft, ob das Zertifikat angepasst (1.1.1.1 = www.all_servers.com:

In Apache 2.2, das unter Verwendung der IP-Adressen wie so erreicht werden könnte)

Allerdings, in Apache 2.4, bekomme ich jetzt Zertifikatsprobleme (zu Recht). (Dieser genaue Code funktioniert auf einem Apache-2.2-Box)

[Thu Oct 10 12:01:48.571246 2013] [proxy:error] [pid 13282:tid 140475667224320] (502)Unknown error 502: [client 192.168.1.1:48967] AH01084: pass request body failed to 1.1.1.1:443 (1.1.1.1) 
[Thu Oct 10 12:01:48.571341 2013] [proxy:error] [pid 13282:tid 140475667224320] [client 192.168.1.1:48967] AH00898: Error during SSL Handshake with remote server returned by /server1/asd 
[Thu Oct 10 12:01:48.571354 2013] [proxy_http:error] [pid 13282:tid 140475667224320] [client 192.168.1.1:48967] AH01097: pass request body failed to 1.1.1.1:443 (1.1.1.1) from 192.168.1.1() 

ich nicht verwenden können/etc/hosts, wie ein Server funktionieren würde, mit:

1.1.1.1 www.all_servers.com 

SSLProxyEngine On 
ProxyPass /server1 https://www.all_servers.com/ 
ProxyPassReverse /server1 https://www.all_servers.com/ 

Aber viele Server würde nicht


also zur eigentlichen Frage:

gibt es eine Möglichkeit, um für cce mod_proxy, um fehlpassende Zertifikate zu ignorieren. Oder gibt es einen besseren Weg, dies zu tun?

Danke für jede Hilfe mit diesem!

+0

Um Verwirrung zu vermeiden, könnten Sie Ihren Kunden/Kunden etwas anderes als "Client" nennen, wenn Sie über Server sprechen. – Bruno

+0

Abstimmung, um zu ServerFault zu wechseln. – Bruno

Antwort

15

Sie können die Optionen SSLProxy* auf Ihrem Apache-Server festlegen (was ein Client ist, soweit die Reverse-Proxy-Verbindungen betroffen sind).

Dies wurde mit SSLProxyCheckPeerCN (standardmäßig in 2.2, aber standardmäßig in 2.4) getan, aber ich bin mir nicht sicher, wie dies mit IP-Adressen funktionieren wird (seit IP-Adressen in der CN ist nicht Standard). Es gibt eine neue Option in Apache Httpd 2.4 zum Überprüfen von SANs (SSLProxyCheckPeerName), aber ich bin mir nicht sicher, wie es sich für IP-Adressen verhält.

Mit IP-Adressen in DNS SAN-Erweiterungen oder in der CN ist nicht standardkonform mit HTTPS:

Wenn eine subjectAltName Erweiterung des Typ DNSname vorhanden ist, dass die Identität verwendet werden muss. Andernfalls MUSS das (am meisten spezifische) allgemeine Feld Name im Feld Betreff des Zertifikats verwendet werden. Obwohl die Verwendung des allgemeinen Namens eine gängige Praxis ist, wird sie nicht weiter unterstützt. Zertifizierungsstellen sollten stattdessen stattdessen den Namen dNSName verwenden.

[...]

In einigen Fällen wird die URI als IP-Adresse angegeben, anstatt einen Hostnamen. In diesem Fall muss die IP-Adresse subjectAltName im Zertifikat vorhanden sein und muss genau mit der IP im URI übereinstimmen.

+1

Danke, das funktionierte gut, ich hatte nur checkCN aus, sobald ich checkName auf off gesetzt hatte, fing alles an, magisch zu funktionieren – Gwynnie

+1

Wenn Sie diese Option deaktivieren, ist diese Verbindung möglicherweise anfällig für MITM-Angriffe, außer Sie haben diese Zertifikate in das SSLProxyCACertificate * importiert. 'direkt (und es gibt * nur * jene, die dort sind). – Bruno

Verwandte Themen