it-swarm.com.de

421 Fehlgeleitete Anfrage

Ich erhalte gelegentlich den folgenden 421-Fehler:

Fehlgeleitete Anfrage

Der Client benötigt für diese Anforderung eine neue Verbindung, da der angeforderte Hostname nicht mit der für diese Verbindung verwendeten SNI (Server Name Indication) übereinstimmt.

Durch das Aktualisieren des Browsers wird der Fehler jedoch behoben und die Seite wird normal geladen. Das nächste Mal, wenn die Seite geladen wird, entsteht kein Fehler, und als solches scheint das Muster ziemlich zufällig zu sein. Das einzige Muster, das ich sehen kann, ist, dass dies passieren kann, wenn ich eine Seite mithilfe des Headers umlenke ("Location:". $ Url);

Ich habe ein PositiveSSL Multi-Domain-Zertifikat von Comodo. Meine Server sind Apache auf einem gemeinsam genutzten Webhosting-Dienst, sodass ich keinen Zugriff auf die Konfiguration habe.

Ich lade Seiten von einer Domain und innerhalb der Seite befinden sich Links zu einer zweiten Domain im Zertifikat.

Alles, was ich zu diesem Fehler gelesen habe, scheint darauf hinzudeuten, dass dieses Problem mit einem Multi-Domain-Zertifikat zusammenhängt.

Was ich wissen möchte, ist, ob es irgendetwas auf der Codierungsseite der Webseite (PHP) gibt, das dies verursachen kann (und behoben werden kann) oder ob es sich um einen Konfigurationsfehler oder möglicherweise einen Serverfehler handelt und nur mein Hosting-Service dies kann repariere es.

Mein Hosting-Service war bisher nicht in der Lage, etwas bereitzustellen, und bat um einen Rückruf mit der genauen Uhrzeit, zu der er das nächste Mal recherchieren kann. Jede Hilfe wäre dankbar, da ich nicht besonders zuversichtlich bin, dass sie dies herausfinden können.

[~ # ~] update [~ # ~] Ok, fast ein paar Jahre später und entschied, dass es Zeit war, sich damit zu befassen. Ich konnte die meisten Probleme lösen, indem ich meine statischen Domänen entfernte, die Bilder und Javascript bereitstellten. Für einige dieser Inhalte verwendete ich jedoch immer noch eine zweite Domain, und insbesondere Safari bereitete mir immer noch Probleme.

Ich habe mehr recherchiert und bin auf einen anderen Artikel gestoßen, der spricht hier darüber . Genau das, was @Kevin beschreibt. Der Artikel bestätigte, dass es in Safari passiert. Aus diesem Grund habe ich mich daran gemacht, separate Zertifikate für jede Domain zu erhalten. Ich bin auf einem gemeinsam genutzten Host (Webhostinghub) und habe festgestellt, dass sie jetzt kostenloses SSL (AutoSSL) anbieten, das automatisch erneuert wird. Es klang zu gut, um wahr zu sein. Sie haben mich mit 5 kostenlosen Zertifikaten ausgestattet. So weit, ist es gut. Ich kann sogar versuchen, die statischen Domänen zum Testen wieder zu aktivieren. Wenn dies alles funktioniert, spare ich $, um als Bonus zu booten, und lasse meine Comodo-Zertifikate im Juli ablaufen.

10
mseifert

Dies wird durch die folgende Abfolge von Ereignissen verursacht:

  1. Der Server und der Client unterstützen und verwenden HTTP/2.
  2. Der Client fordert eine Seite unter foo.example.com.
  3. Während der TLS-Aushandlung legt der Server ein Zertifikat vor, das für beide foo.example.com und bar.example.com (und der Client akzeptiert es). Dies kann mit einem Platzhalterzertifikat oder einem SAN Zertifikat) erfolgen.
  4. Der Client verwendet die Verbindung erneut, um eine Anforderung für bar.example.com.
  5. Der Server kann oder möchte die Wiederverwendung domänenübergreifender Verbindungen nicht unterstützen (z. B. weil Sie das SSL anders konfiguriert haben und Apache möchte eine TLS-Neuverhandlung erzwingen) und bedient HTTP 421.
  6. Der Client versucht es nicht automatisch mit einer neuen Verbindung (siehe zum Beispiel Chrome-Fehler # 546991 , jetzt behoben). Das relevante RfC besagt, dass der Client es möglicherweise erneut versuchen KANN, nicht, dass er SOLLTE oder MUSS. Ein erneuter Versuch ist nicht besonders benutzerfreundlich, kann jedoch für ein Debugging-Tool oder eine HTTP-Bibliothek wünschenswert sein.

Ereignis Nr. 6 liegt außerhalb Ihrer Kontrolle, aber abhängig von der Software des Servers kann Nr. 5 behoben werden. Weitere Informationen dazu, wie und wann HTTP 421 gesendet wird, finden Sie in der HTTP/2-Dokumentation Ihres Servers. Alternativ können Sie für jede Domäne separate Zertifikate ausstellen. Dies führt jedoch zu einem höheren Verwaltungsaufwand und ist möglicherweise nicht sinnvoll. Sie können HTTP/2 auch vollständig deaktivieren, aber das ist in den meisten Fällen wahrscheinlich übertrieben.

13
Kevin

Vielleicht ist das für jemanden hilfreich.

Ich habe diesen Fehler erhalten, als ich versucht habe, meine Apache Virtual Host-Konfiguration in HTTPS zu ändern, aber nur den Port von 80 auf 443 geändert und vergessen habe, ihn hinzuzufügen

   SSLEngine on
   SSLCertificateFile "/opt/lampp/htdocs/localhost.crt"
   SSLCertificateKeyFile "/opt/lampp/htdocs/localhost.key"

Konfiguration verursacht Fehler 421:

<VirtualHost mydoamin.local:443>   <-- fistly I 
       DocumentRoot "/opt/lampp/htdocs/mydomain/"
       ServerName www.mydomain.local
</VirtualHost>

Die richtige Konfiguration:

<VirtualHost mydoamin.local:443>
       DocumentRoot "/opt/lampp/htdocs/mydomain/"
       ServerName www.mydomain.local
       SSLEngine on
       SSLCertificateFile "/opt/lampp/htdocs/localhost.crt"
       SSLCertificateKeyFile "/opt/lampp/htdocs/localhost.key"
</VirtualHost>
1
Radek Daniluk