HTTPSはSafariで機能しません


15

WebサーバーとしてApacheを使用するEC2インスタンスがあります(アプリサーバーとしてWildflyがありますが、この問題に関係があるかどうかはわかりません)。EC2の前には、HTTPSを終了してSSL証明書を適用するロードバランサーがあります。

HTTPとHTTPSは両方ともChromeで正常に動作しますが、残念ながらSafariでは動作しません。http://test.papereed.comへのアクセスは正常に機能しますが、https ://test.papereed.comへのアクセスはエラーになります

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

私は/ etc / httpd / logs / error_logと/ etc / httpd / logs / access_logを調べましたが、問題を解決するためのヒントを見つけることなく、Safariコンソールも調べました。そして、それは私の知識がどこまで進んでいるかということです。

回答:


21

curl(HTTP / 2サポート付きでコンパイルされた場合)は同じ問題を示しますが、その理由を示します:

http2エラー:無効なHTTPヘッダーフィールドを受信しました:フレームタイプ:1、ストリーム:1、名前:[アップグレード]、値:[h2、h2c]

接続がすでにHTTP / 2で行われているにもかかわらず、サーバーがHTTP / 2へのアップグレードを提供しているように見えます-これは意味がありません。それだけでなく、明示的に禁止されています。RFC 7540のセクション8.1.2.2

エンドポイントは、接続固有のヘッダーフィールドを含むHTTP / 2メッセージを生成してはなりません。接続固有のヘッダーフィールドを含むメッセージは、不正な形式(セクション8.1.2.6)として処理する必要があります。...Keep-Alive、Proxy-Connection、Transfer-Encoding、Upgradeなどの接続固有のヘッダーフィールド

ApacheはこのヘッダーをHTTP / 2で送信すべきではないので、バグを探します。

私の推測では、あなたはこのような構成を持っていると思います

Protocols h2 h2c http/1.1

ブラウザがとにかくTLSなしのHTTP / 2をサポートせず、HTTP / 2 over TLSでUpgradeヘッダーが必要ないことを考えると、この構成を次のものに置き換えることをお勧めします。

Protocols h2 http/1.1

これにより、TLSを使用しない不要なHTTP / 2のサポートが無効になりますが、これは、プレーンHTTPからプレーンHTTP / 2へのアップグレードにのみ必要なため、この方法でUpgradeヘッダーを削除することを望みます。

編集:構成を変更するOPによるコメントによると、Protocols助けにはならなかった。ヘッダーをmod_http2削除することにより、この動作(バグ)を明示的に回避する必要がありましたUpgrade

Header unset Upgrade

2
ありがとうございました!私は実際に次の構成を持ってい# Enable HTTP/2 by default # https://httpd.apache.org/docs/2.4/mod/core.html#protocols <IfModule mod_http2.c> Protocols h2 h2c http/1.1 </IfModule> ます: あなたの推奨に従って変更しProtocols h2 http/1.1てアップグレードヘッダーを削除しなかったので、代わりにプロトコル行をそのままにして、次を追加しました:Header unset Upgradeヘッダーを削除します。私がここで何をするか/何が起こっているのかを100%だとは言えませんが、今はSafariでもうまく動作します:
jola

@jola:フィードバックをありがとう。私はそれを答えに含めました。
ステフェンウルリッヒ

3

これはAWS / SSLの問題ではなく、Safariの問題だと思います。そのエラーを検索すると、Googleで多くの結果が得られます。

SSL ShopperテストおよびSSL Labsテストに従って、すべてがウェブサイトでチェックアウトされます。

この問題の可能な解決策を見つけました。

解決策は、「プライバシー」の下の「Safari設定」に移動し、すべての詳細をリストすることでした。これにより、Cookieなどが使用されたすべてのサイトのログが提供されました。Weather Networkドメインページを見つけて、そこからすべてのコンテンツを消去しました。その後、問題なくWeather Networkページをリロードできました。これは他の同様の特異なサイトでも機能すると思います。

あります。この Apacheで行うことができました。


はい、これをグーグルで検索しましたが、直接適用されるものは見つかりませんでした(afaiu)。私はnginxの提案された解決策を読みましたが、これがApacheにどのように/適用できるかわかりません。
ジョラ

Apacheは間違いなく"Upgrade"ヘッダーを削除できますが、これはすべてNginxが行っています。
ティム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.