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コンソールでも問題を解決するためのヒントを見つけていません。そして、それは私の知識がどこまで進んだかについてです:-(この問題を追跡する方法についてのヒントは大歓迎です。
curl(HTTP/2サポートを使用してコンパイルした場合)でも同じ問題が発生しますが、理由は次のとおりです。
http2エラー:無効なHTTPヘッダーフィールドを受信しました:フレームタイプ:1、ストリーム:1、名前:[アップグレード]、値:[h2、h2c]
接続がすでにHTTP/2で行われているにもかかわらず、サーバーがHTTP/2へのアップグレードを提供しているようです-意味がありません。それだけでなく、明示的に禁止されています。から RFC 7540セクション8.1.2.2 :
エンドポイントは、接続固有のヘッダーフィールドを含むHTTP/2メッセージを生成してはなりません(MUST NOT)。接続固有のヘッダーフィールドを含むメッセージは、不正な形式として扱われる必要があります(セクション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でアップグレードヘッダーが必要ないことを考えると、この構成を次のように置き換えることをお勧めします。
Protocols h2 http/1.1
これにより、TLSを使用しない不要なHTTP/2のサポートが無効になりますが、これはプレーンHTTPからプレーンHTTP/2にアップグレードする場合にのみ必要となるため、アップグレードヘッダーをこの方法で取り除くことができます。
編集:OPのコメントによると、Protocols
構成の変更は役に立ちませんでした。 Upgrade
ヘッダーを削除して、mod_http2
のこの動作(バグなど)を明示的に回避する必要がありました。
Header unset Upgrade
これはAWS/SSLの問題ではなくSafariの問題だと思います。そのエラーを検索すると、Googleで多くの結果が得られます。
SSL Shopper test および SSL Labs Test に従って、すべてがWebサイトでチェックアウトされます。
私は この可能な解決策 を問題に見つけました。
解決策は、プライバシーの下のSafari設定に移動し、すべての詳細をリストすることでした。これにより、Cookieなどが使用されたすべてのサイトのログが提供されました。 Weather Networkのドメインページを見つけて、そこからすべてのコンテンツをクリアしました。その後、問題なくWeather Networkページをリロードすることができました。これは他の同様の特異なサイトでも機能すると思います。
また、Apacheで実行できる this もあります。