web-dev-qa-db-ja.com

HTTPSはSafariでは機能しません

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コンソールでも問題を解決するためのヒントを見つけていません。そして、それは私の知識がどこまで進んだかについてです:-(この問題を追跡する方法についてのヒントは大歓迎です。

16
jola

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
22
Steffen Ullrich

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

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

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

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

また、Apacheで実行できる this もあります。

3
Tim