it-swarm.com.de

Ungültige Nachricht mit Unterschrift empfangen

Ich verwende Tomcat 7.0.29 mit Apache 2.2.22 Modproxy. Konfiguriertes Ajp als Protokoll in httpd.conf und AjpNioProtocol in server.xml. Nachdem der Server gestartet wurde, werden die Protokolle mit der folgenden Meldung gefüllt:

Schwerwiegend: Ungültige Nachricht mit Signatur 20599 empfangen
com.Apache.coyote.ajp.AjpMessage processHeader

Es werden keine Anforderungen an den Web- oder Tomcat-Server gesendet, und es wird immer noch dieser Fehler ausgegeben. Zugriffsprotokolle in Tomcat und Apache zeigen an, dass keine Anforderung eingeht. Was verursacht den ungültigen Nachrichtenfehler?

Hier ist die Konfiguration:

  • 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

Für mich war das Problem einfach. Ich habe HTTP-Anforderungen gesendet, aber der Connector wurde mit dem AJP-Protokoll konfiguriert. Mein Connector in server.xml wurde folgendermaßen konfiguriert:

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

Aber als ich es geändert habe:

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

Der Fehler ging weg.

Hoffentlich hilft das jemandem mit diesem Fehler.

26
smntx

Dies kann auch passieren, wenn die Puffergrößen an beiden Enden nicht gleich sind: In Protokollen wird eine ungültige AJP-Nachricht und der Browser 400-Fehlercode angezeigt.

Ich habe die Situation mit packetSize auf AJP Connector und ProxyIOBufferSize in der Apache2-Konfiguration behoben.

In Tomcat server.xml:

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

Fügen Sie in Apache2 mod_proxy_ajp configuration die Anweisung ProxyIOBufferSize 65536 hinzu.

9
Yves Martin

Es wurde festgestellt, dass einer der internen Prozesse diesen Port aufruft und HTTP-Anforderungen sendet, die den Fehler "Ungültige Nachricht .." verursachen. Also habe ich einen zusätzlichen http-Connector für diese internen Prozesse hinzugefügt

2
Yasser

Es werden keine Anforderungen an den Web- oder Tomcat-Server gesendet, und es wird immer noch dieser Fehler ausgegeben. Zugriffsprotokolle in Tomcat und Apache zeigen, dass keine Anforderung eingeht. Was verursacht den Fehler bei einer ungültigen Nachricht?

Nur ein Hinweis für andere Leute, weil ich dasselbe in einer meiner Konfigurationen versehentlich vergessen habe: Die erwähnte Connector in server.xml hört global, weil nur port angegeben wird, ohne address. Letzteres ist standardmäßig so definiert, dass es global abhört:

Standardmäßig wird dieser Port für alle IP-Adressen verwendet, die dem Server zugeordnet sind.

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

Ohne zusätzliche Firewall oder ähnliches kann es also sein, dass schlechte Clients einfach mit verschiedenen Protokollen auf offene Ports testen, die HTTP sein können oder nicht, und daher zu Fehlermeldungen mit unterschiedlichen Signaturen führen. Ohne sehr gute Gründe sollte es nicht erforderlich sein, AJP global verfügbar zu machen, insbesondere nicht bei einem Proxy-Setup, wie es vom Thread-Starter verwendet wird.

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

Ich habe heute eine ähnliche Nachricht erhalten:

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

Die Hauptursache für mein Problem war, dass Selinux Apache nicht mit Tomcat verbinden konnte. Ich bin etwas verwirrt darüber, wie dieser Fehler ein Ergebnis war - ich würde erwarten, dass es keine Verbindung geben würde, Punkt. Ich vermute, ich habe wahrscheinlich versucht, mich manuell mit diesem Port mit Telnet zu verbinden. Wenn man das tut, gibt es sicherlich eine ähnliche Botschaft.

Egal, diese Selinux-Erinnerung wird vielleicht jemandem helfen, der hier landet. 

0
Dan Pritts