2013-10-10 23 views
15

Per informazioni: (interrogazioni basso)E 'possibile ignorare un certificato di Apache proxy'd

Sto cercando di connettersi a un cliente, che dispone di 8 server, che hanno tutti gli indirizzi IP univoci. Il client utilizza lo stesso certificato SSL su tutti i server (per questo esempio, nome cert == www.all_servers.com). Il client consente solo le richieste in arrivo su https.

Sto provando a creare un proxy apache utilizzando mod_proxy che associa mappature URI differenti a server diversi. Per esempio:

https://PROXY_SERVER/SERVER1/{REQUEST} 

Questo avrebbe mandato {} RICHIESTA a Server1

https://PROXY_SERVER/SERVER2/{REQUEST} 

avrebbe inviato {} RICHIESTA a server2. Finora, piuttosto semplice.

In Apache 2.2, questo potrebbe essere realizzato utilizzando gli indirizzi IP in questo modo:!

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/ 

questo era dovuto ad Apache 2.2 non controllare se il certificato abbinato (1.1.1.1 = www.all_servers.com)

Tuttavia, in Apache 2.4, ora sto ottenendo problemi con i certificati (giustamente). (Questo codice esatto funziona su un 2.2 scatola apache)

[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() 

non posso usare/etc/hosts, come un server avrebbe funzionato, utilizzando:

1.1.1.1 www.all_servers.com 

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

Ma molti server non sarebbe


Così, alla domanda effettiva:

esiste un modo per per ce mod_proxy per ignorare i certificati di corrispondenza mancata. Oppure, c'è un modo migliore per farlo.

Grazie per qualsiasi aiuto con questo!

+0

Giusto per evitare confusione, è possibile chiamare il cliente/cliente qualcosa di diverso da "client", quando si parla di server. – Bruno

+0

Votare per passare a ServerFault. – Bruno

risposta

15

È possibile impostare le opzioni SSLProxy* sul server Apache (che è un client per quanto riguarda le connessioni del proxy inverso).

Questo è stato eseguito con SSLProxyCheckPeerCN (disattivato per impostazione predefinita in 2.2, ma attivato per impostazione predefinita in 2.4), ma non sono sicuro di come funzionerà con gli indirizzi IP (poiché gli indirizzi IP nel CN ​​non sono standard). C'è una nuova opzione in Apache Httpd 2.4 per il controllo delle SAN (SSLProxyCheckPeerName), ma non sono sicuro di come si comporti anche per gli indirizzi IP.

Avere gli indirizzi IP in DNS estensioni SAN o nella NC non è standard compatibile con HTTPS:

Se è presente un'estensione subjectAltName di tipo dNSName, che deve essere utilizzato come l'identità. In caso contrario, DEVE essere utilizzato il (più specifico) comune campo Nome nel campo Oggetto del certificato. Anche se l'uso del nome comune è una pratica esistente, è deprecato e le autorità di certificazione sono incoraggiate ad utilizzare il dNSName .

[...]

In alcuni casi, l'URI è specificato come un indirizzo IP anziché un nome host. In questo caso, il NomeAloggettoNomeIndirizzo iP deve essere presente nel certificato e deve corrispondere esattamente all'IP nell'URI.

+1

Grazie a questo ho funzionato bene, ho solo checkCN disattivato, una volta aggiunto checkName a disattivato, tutto ha iniziato a funzionare magicamente – Gwynnie

+1

Disattivando questa connessione è potenzialmente vulnerabile agli attacchi MITM, a meno che forse non li abbia importati in 'SSLProxyCACertificate * 'direttamente (e ci sono * solo * quei certificati lì). – Bruno