Erreur lors de la négociation SSL avec le serveur distant


118

J'ai Apache2(écoute sur 443) et une application Web en cours d'exécution Tomcat7(écoute sur 8443) Ubuntu.

J'ai défini apache2 comme proxy inverse pour pouvoir accéder à l'application Web via le port 443 au lieu de 8443. En outre, j'ai besoin d'une communication SSL non seulement entre le navigateur et apache2 mais aussi entre apache2 et tomcat7, donc je définis SSL sur apache2 et tomcat7 . Si j'essaie d'accéder à l'application Web en contactant directement tomcat7, tout va bien. Le problème est que lorsque j'essaie d'accéder à l'application Web de tomcat via apache2 (proxy inverse), le navigateur affiche l'erreur:

Proxy Error
The proxy server could not handle the request GET /web_app.
Reason: Error during SSL Handshake with remote server

Apache ne vérifie pas le certificat que vous avez installé sur le tomcat. Est-ce un certificat auto-signé? Ou est-il fabriqué par une autorité de certification interne?
MK.

2
Il est auto-signé avec cette commande: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
user2791481

3
serverfault.com/questions/356678/… Je pense que c'est ce que vous voulez: SSLProxyVerify aucun SSLProxyCheckPeerCN off
MK.

9
Mieux vaut définir SSLProxyCACertificateFilevotre certificat CA privé au lieu de simplement désactiver la vérification.
ndbroadbent

comme expliqué dans ce blog, vous pouvez désactiver les vérifications SSL.
HybrisHelp

Réponses:


266

Le commentaire de MK m'a orienté dans la bonne direction.

Dans le cas d'Apache 2.4 et supérieur, il existe différentes valeurs par défaut et une nouvelle directive.

J'utilise Apache 2.4.6 et j'ai dû ajouter les directives suivantes pour le faire fonctionner:

SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

Donc, cela désactive la protection, mais tant que le trafic est local (c'est-à-dire 127.0.0.1:8443 ), cela devrait être moins problématique, non?
bgStack15

5
Eh bien, cela ne désactive pas la protection dans la mesure où le cryptage est concerné. Le trafic est toujours chiffré. Cela désactive simplement la vérification du certificat pour s'assurer qu'il est effectué par une autorité de confiance. Donc, si vous faites confiance au serveur, vous ne devriez pas avoir de problème. Mais oui, pour le trafic local, je pense que vous allez bien aussi.
mydoghasworms

1
Merci mydoghasworms. Vos directives fonctionnent dans la version Serveur: Apache / 2.4.6. Si quelqu'un a besoin de connaître la version de httpd, utilisez ceci: httpd -V
JRichardsz

3

J'ai 2 serveurs installés sur le docker, le proxy inverse et le serveur Web. Cette erreur a commencé à se produire pour tous mes sites Web tout d'un coup après 1 an. Lors de la configuration précédente, j'ai généré un certificat auto-signé sur le serveur Web.

J'ai donc dû générer à nouveau le certificat SSL et cela a commencé à fonctionner ...

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl.key -out ssl.crt


1

Face au même problème que OP:

  • Tomcat a renvoyé une réponse lors de l'accès direct via l'interface utilisateur SOAP
  • N'a pas chargé les fichiers HTML
  • Lors de l'utilisation des propriétés Apache mentionnées par la réponse précédente, la page Web est apparue mais AngularJS n'a pas pu obtenir de réponse HTTP

Le certificat SSL Tomcat a expiré alors qu'un navigateur l'a indiqué comme sécurisé - le certificat Apache était loin d'être expiré. La mise à jour du fichier Tomcat KeyStore a résolu le problème.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.