web-dev-qa-db-fra.com

Est-il possible d'ignorer un certificat proxy Apache

Pour des informations générales: (Question en bas)

J'essaie de me connecter à un client, qui a 8 serveurs, qui ont tous des adresses IP uniques. Le client utilise le même certificat SSL sur tous les serveurs (pour cet exemple, le nom du certificat == www.all_servers.com). Le client autorise uniquement les demandes entrantes via https.

J'essaie de créer un proxy Apache à l'aide de mod_proxy qui mappe différents mappages d'URI à différents serveurs. Par exemple:

https://PROXY_SERVER/SERVER1/{REQUEST}

Cela enverrait {REQUEST} à server1

https://PROXY_SERVER/SERVER2/{REQUEST}

enverrait {REQUEST} à server2. Jusqu'à présent, assez simple.

Dans Apache 2.2, cela pourrait être réalisé en utilisant les adresses IP comme ceci:

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/

Cela était dû au fait qu'Apache 2.2 ne vérifiait pas si le certificat correspondait (1.1.1.1! = Www.all_servers.com)

Cependant, dans Apache 2.4, je reçois maintenant des problèmes de certificat (à juste titre). (Ce code exact fonctionne sur une boîte Apache 2.2)

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

Je ne peux pas utiliser/etc/hosts, car un serveur fonctionnerait, en utilisant:

1.1.1.1 www.all_servers.com

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

Mais de nombreux serveurs ne le feraient pas


Donc, à la vraie question:

Existe-t-il un moyen de forcer mod_proxy à ignorer les certificats de correspondance incorrecte. Ou existe-t-il une meilleure façon de procéder?.

Merci pour toute aide concernant ceci!

19
Gwynnie

Vous pouvez définir le SSLProxy* options sur votre serveur Apache (qui est un client en ce qui concerne les connexions proxy inverses).

Cela a été fait avec SSLProxyCheckPeerCN (désactivé par défaut dans 2.2, mais activé par défaut dans 2.4), mais je ne sais pas comment cela va fonctionner avec les adresses IP (car avoir des adresses IP dans le CN n'est pas la norme). Il y a une nouvelle option dans Apache Httpd 2.4 pour vérifier les SAN (SSLProxyCheckPeerName), mais je ne sais pas non plus comment il se comporte pour les adresses IP.

Avoir des adresses IP dans [~ # ~] dns [~ # ~] SAN ou dans le CN ne sont pas conforme avec HTTPS :

Si une extension subjectAltName de type dNSName est présente, elle DOIT être utilisée comme identité. Sinon, le champ (le plus spécifique) Common Name du champ Subject du certificat DOIT être utilisé. Bien que l'utilisation du nom commun soit une pratique existante, elle est obsolète et les autorités de certification sont encouragées à utiliser le nom dNS à la place.

[...]

Dans certains cas, l'URI est spécifié en tant qu'adresse IP plutôt qu'en tant que nom d'hôte. Dans ce cas, iPAddress subjectAltName doit être présent dans le certificat et doit correspondre exactement à l'IP dans l'URI.

20
Bruno