web-dev-qa-db-fra.com

Ajp message invalide reçu avec signature

J'utilise Tomcat 7.0.29 avec Apache 2.2.22 modproxy. Configuré Ajp en tant que protocole dans httpd.conf et AjpNioProtocol dans server.xml. Après le démarrage du serveur, les journaux sont remplis avec le message suivant:

Grave: message non valide reçu avec la signature 20599
com.Apache.coyote.ajp.AjpMessage processHeader

Aucune demande n'a été envoyée au Web ou au serveur Tomcat et cette erreur est toujours générée. Les journaux d’accès dans Tomcat et Apache indiquent qu’aucune demande n’arrive.… Quelle est la cause de l’erreur de message non valide?

Voici la configuration:

  • httpd.conf

    ProxyPass /wl ajp:// ip : port /wl
    ProxyPassReverse /wl ajp:// ip : port /wl
    
  • server.xml

    <Connector port="port" 
               protocol="org.Apache.coyote.ajp.AjpNioProtocol" 
               connectionTimeout="20000" 
               acceptorThreadCount="2" 
               maxThreads="1600" 
               redirectPort="8443" />
    
20
Yasser

Pour moi, le problème était simple. J'envoyais des requêtes HTTP mais le connecteur était configuré avec le protocole AJP. Mon connecteur dans server.xml a été configuré comme suit:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

Mais quand je l'ai changé en ceci:

<Connector port="8009" protocol="HTTP/1.1" redirectPort="8443"/>

L'erreur est partie.

Espérons que cela aidera quelqu'un avec cette erreur.

26
smntx

Cela peut également se produire lorsque la taille du tampon n'est pas identique aux deux extrémités: les journaux mentionnent un message AJP non valide et le navigateur reçoit le code d'erreur 400.

J'ai corrigé la situation avec packetSize sur connecteur AJP et ProxyIOBufferSize dans la configuration d'Apache2.

Dans Tomcat server.xml:

<Connector protocol="AJP/1.3" port="8009"
   connectionTimeout="20000"
   packetSize="65536"
   proxyName="yourproxy.domain.ltd" proxyPort="80"
   />

Dans Apache2 mod_proxy_ajp configuration , ajoutez l'instruction ProxyIOBufferSize 65536.

9
Yves Martin

Il a été constaté que l'un des processus internes appelait ce port et envoyait des requêtes http, provoquant l'erreur "Message non valide ..". J'ai donc fini par ajouter un connecteur http supplémentaire pour ces processus internes

2
Yasser

Aucune demande n'a été envoyée au Web ou au serveur Tomcat et cette erreur est toujours générée. Les journaux d’accès dans Tomcat et Apache indiquent qu’aucune demande n’arrive. Quelle est la cause de l’erreur de message non valide?

Juste un indice pour d’autres personnes parce que j’ai oublié la même chose dans une de mes configurations par accident: La Connector mentionnée dans server.xml écoute globalement, car seule port est spécifiée, sans address. Ce dernier est défini pour écouter globalement par défaut:

Par défaut, ce port sera utilisé sur toutes les adresses IP associées au serveur.

https://Tomcat.Apache.org/Tomcat-7.0-doc/config/http.html

Donc, sans pare-feu supplémentaire ou similaire, il est possible que de mauvais clients testent simplement les ports ouverts en utilisant divers protocoles, qui peuvent ou non être HTTP et entraînent par conséquent des messages d'erreur avec différentes signatures. Sans de très bonnes raisons, il ne devrait pas être nécessaire de rendre AJP disponible dans le monde entier, surtout dans le cas d'une configuration de proxy telle que celle utilisée par le démarreur de thread.

<Connector  address="localhost" port="port" 
            protocol="org.Apache.coyote.ajp.AjpNioProtocol" 
            connectionTimeout="20000" 
            acceptorThreadCount="2" 
            maxThreads="1600" 
            redirectPort="8443" />
0
Thorsten Schöning

J'ai reçu un message similaire aujourd'hui:

Nov 18, 2016 4:25:00 PM org.Apache.coyote.ajp.AjpMessage processHeader
SEVERE: Invalid message received with signature 65524

La cause principale de mon problème était que selinux ne laissait pas Apache se connecter à Tomcat. Je suis un peu confus quant au résultat de cette erreur - je m'attendrais à ce qu'il n'y ait aucun lien, point final. Je suppose que j’ai probablement tenté de me connecter manuellement à ce port avec telnet. Faire cela donne certainement un message similaire.

Quoi qu'il en soit, ce rappel selinux sera utile à quelqu'un d'autre qui finira ici. 

0
Dan Pritts