it-swarm.com.de

HTTPS funktioniert nicht mit Safari

Ich habe eine EC2-Instanz mit Apache als Webserver (und Wildfly als App-Server, obwohl ich nicht sicher bin, ob dies etwas mit diesem Problem zu tun hat). Vor EC2 habe ich einen Load Balancer, der HTTPS beendet und das SSL-Zertifikat anwendet.

Sowohl HTTP als auch HTTPS funktionieren in Chrome einwandfrei, in Safari jedoch leider nicht. Der Zugriff auf http://test.papereed.com funktioniert einwandfrei, aber der Zugriff auf https://test.papereed.com gibt den Fehler aus

"Safari can't open the page. The error is "The operation couldn't be completed. Protocol error" (NSPOSIXErrorDomain:100)"

Ich habe in/etc/httpd/logs/error_log und/etc/httpd/logs/access_log und auch in der Safari-Konsole nachgesehen, ohne einen Hinweis zur Lösung des Problems zu finden. Und so weit geht mein Wissen :-( Hinweise, wie man dieses Problem aufspürt, sind sehr willkommen.

16
jola

curl (wenn mit HTTP/2-Unterstützung kompiliert) weist das gleiche Problem auf, zeigt jedoch den Grund:

http2-Fehler: Es wurde ein ungültiges HTTP-Header-Feld empfangen: Rahmentyp: 1, Stream: 1, Name: [Upgrade], Wert: [h2, h2c]

Es sieht so aus, als ob Ihr Server ein Upgrade auf HTTP/2 anbietet, obwohl die Verbindung bereits mit HTTP/2 hergestellt wurde - was keinen Sinn macht. Nicht nur das, es ist ausdrücklich verboten. Von RFC 7540 Abschnitt 8.1.2.2 :

Ein Endpunkt DARF KEINE HTTP/2-Nachricht generieren, die verbindungsspezifische Headerfelder enthält. Alle Nachrichten, die verbindungsspezifische Headerfelder enthalten, MÜSSEN als fehlerhaft behandelt werden (Abschnitt 8.1.2.6) .... verbindungsspezifische Headerfelder, z. B. Keep -Alive, Proxy-Verbindung, Transfer-Codierung und Upgrade

Es sieht für mich nach einem Fehler aus, da Apache diesen Header nicht mit HTTP/2 senden sollte.

Ich vermute, dass Sie eine solche Konfiguration haben

Protocols h2 h2c http/1.1

Da Browser HTTP/2 ohne TLS ohnehin nicht unterstützen und für HTTP/2 über TLS kein Upgrade-Header erforderlich ist, empfehle ich, diese Konfiguration durch zu ersetzen

Protocols h2 http/1.1

Dies deaktiviert die Unterstützung für nicht benötigtes HTTP/2 ohne TLS, sollte aber hoffentlich den Upgrade-Header auf diese Weise entfernen, da dies nur für das Upgrade von einfachem HTTP auf einfaches HTTP/2 erforderlich ist.

BEARBEITEN: Laut dem Kommentar des OP hat das Ändern der Protocols Konfiguration nicht geholfen. Es war notwendig, dieses Verhalten (d. H. Fehler) von mod_http2 Explizit zu umgehen, indem der Header Upgrade gelöscht wurde:

Header unset Upgrade
22
Steffen Ullrich

Ich denke, dies ist eher ein Safari-Problem als ein AWS/SSL-Problem. Die Suche nach diesem Fehler führt bei Google zu vielen, vielen Ergebnissen.

Alles wird auf der Website gemäß SSL Shopper Test und SSL Labs Test überprüft.

Ich fand diese mögliche Lösung für das Problem.

Die Lösung bestand darin, in den Safari-Einstellungen unter Datenschutz alle Details aufzulisten. Dies lieferte ein Protokoll aller Websites, auf denen Cookies usw. verwendet wurden. Ich habe die Weather Network-Domain-Seite gefunden und den gesamten Inhalt daraus gelöscht. Ich konnte dann die Weather Network-Seite ohne Probleme neu laden. Ich gehe davon aus, dass dies für andere ähnliche singuläre Sites funktionieren würde.

Es gibt auch this , was mit Apache gemacht werden könnte.

3
Tim