421誤ったリクエスト


10

次の421エラーが時々発生します。

誤ったリクエスト

要求されたホスト名がこの接続に使用されているサーバー名表示(SNI)と一致しないため、クライアントはこの要求に対して新しい接続を必要とします。

ただし、ブラウザを更新するとエラーがクリアされ、ページは正常に読み込まれます。次回ページをロードしてもエラーは発生せず、そのためパターンはかなりランダムに見えます。私が見ることができる唯一のパターンは、header( "Location:"。$ url);を使用してページをリダイレクトしているときに発生する可能性があることです。

ComodoからのPositiveSSLマルチドメイン証明書を持っています。私のサーバーは共有WebホスティングサービスのApacheなので、設定にアクセスできません。

1つのドメインからページを読み込み、ページ内に証明書の2番目のドメインへのリンクがあります。

このエラーに関して私が読んだことはすべて、この問題がマルチドメイン証明書であることに関連しているこの問題を指摘しているようです。

私が知りたいのは、これを引き起こす可能性のあるもの(そして修正できるもの)のコーディング側にWebページ(php)の何かがあるかどうか、またはそれが構成エラーまたはおそらくサーバーエラーであり、私のホスティングサービスだけができることです修理する。

私のホスティングサービスはこれまで何も提供することができず、次に発生する正確な時間をコールバックして調査できるように要求しました。彼らがこれを理解できると私が確信しているわけではないので、どんな助けもありがたいです。

アップデート ほぼ2年後、それを処理する時がきたと判断しました。画像とJavaScriptを提供する静的ドメインを削除することで、ほとんどの問題を解決できました。しかし、私はこのコンテンツの一部にまだ2番目のドメインを使用しており、特にSafariはまだ問題を抱えていました。

私はより多くの研究を行い、それについてここ話す別の記事に出くわしました。@Kevinが正確に説明していること。記事はそれがSafariで起こることを確認しました。そこでアドバイスを受けて、ドメインごとに個別の証明書を取得することにしました。私は共有ホスト(Webhostinghub)を使用していて、自動更新される無料のSSL(AutoSSL)を提供していることを発見しました。本当であるように思えた。彼らは私に5つの無料の証明書を設定しました。ここまでは順調ですね。静的ドメインを再度有効にしてテストすることもできます。これがすべて機能する場合、ボーナスとして起動するために$を節約し、Comodo証明書を7月に期限切れにします。


同じApacheサーバーで複数のWebサイトをホストしていて、同じSSL証明書を使用していて、これらのドメイン名を切り替えるときにエラーが発生しますか?
John Hanley、

答えが「はい」の場合、各ドメインのIPアドレスが同じ仮想サーバーにマップされているかどうかを確認してください。YESの場合、2つの選択肢があります(私が考えることができます):1)ドメイン名ごとに個別のSSL証明書を発行します。2)各ドメインのWebサーバーを別のサーバー(異なるIPアドレス)に移動します。共有ホスティングを使用している場合、オプション1がおそらく最良のソリューションです。Let's Encryptを使用してこのソリューションをテストし、いくつかの無料の証明書を発行して他のWebサーバーにインストールできます。
John Hanley、

ホスティングプロバイダーにmod_http2を無効にできるかどうか尋ねます。
John Hanley、

@JohnHanley-再#1、はい、6つのドメインを含む同じSSLです。エラーがいつ発生するかを正確に判断するのは簡単ではありません。主なシナリオは、1つのドメインで他の2つのドメインからコンテンツ(画像とjs)を取得していることです。再#2:IPアドレスは間違いなく同じです-個別の証明書を発行して収集する各ドメイン名はかなり高価になります。Let's Encryptを調べましたが、私のプロバイダーではサポートされていません。私のプロバイダーは過去6か月間に無料の証明書を提供していたので、今月更新が来ると、切り替えて何が起こるかを確認します。再#3-mod_http2を無効にすることはできません。ありがとう
mseifert

実際には、特にブロックしない限り、すべてのプロバイダーがLet's Encryptをサポートしています。SSL証明書は、どこで入手しても同じです。唯一の違いは、検証のタイプ(DV、OV、EV)とファイルのパッケージ化/形​​式です。Apacheは非常に人気があり、誰もがそれらをサポートしています。ベンダーが独自の証明書(証明書と秘密鍵)のアップロードをサポートしている限り、DNS検証を使用してそれらを回避できます。独自の証明書のアップロードをサポートしていない場合は、ベンダーを切り替えます。
John Hanley、

回答:


13

これは、次の一連のイベントによって発生します。

  1. サーバーとクライアントの両方がHTTP / 2をサポートし、使用します。
  2. クライアントはでページを要求しますfoo.example.com
  3. TLSネゴシエーションの間、サーバーは両方のための有効な証明書提示foo.example.comとをbar.example.com(クライアントはそれを受け入れ)。これは、ワイルドカード証明書またはSAN証明書を使用して行うことができます。
  4. クライアントは接続を再利用して、をリクエストしbar.example.comます。
  5. サーバーはクロスドメイン接続の再利用をサポートできないか、またはサポートすることを望まず(たとえば、SSLを個別に構成し、ApacheがTLS再ネゴシエーションを強制したいため)、HTTP 421を提供します。
  6. クライアントは新しい接続で自動的に再試行しません(たとえば、現在修正されているChromeバグ#546991を参照)。関連するRFCは、クライアントはそれが必要かなければならないということではなく、再試行してもよい(MAY)ことを言います。再試行に失敗することは特にユーザーフレンドリーではありませんが、デバッグツールまたはHTTPライブラリにとって望ましい場合があります。

イベント#6は制御不能ですが、サーバーのソフトウェアによっては、#5が修正可能な場合があります。サーバーがHTTP 421を送信する方法とタイミングの詳細については、サーバーのHTTP / 2のドキュメントを参照してください。別の方法として、ドメインごとに個別の証明書を発行することもできますが、管理オーバーヘッドが増えるため、価値がない場合があります。HTTP / 2を完全にオフにすることもできますが、ほとんどの場合、それはやり過ぎです。


Comodo PositiveSSL Multi-Domain証明書を持っています。これは確かに単一のSSL証明書です。現時点では、個別の証明書を使用することは、多大な労力と費用の両方または一方です。主な問題は、静的なCookieのないドメインを使用して画像を提供しようとすることで発生していました。421の数に見合うだけの価値はありませんでした。とりあえず、静的ドメインは無効にしています。ドメイン間のリソースの共有はまだいくつかありますが、421の数は大幅に減少しています。現在想定されている効率の価値はありません。いつか、時間があれば、あなたの推薦を試してみるつもりです。
mseifert

詳しい説明ありがとうございます。これはかなり厄介な問題ですが(そして、主にSafariを使用しているときに気付くだけですが)、この問題につながる一連のイベントは非常に興味深いものです:)
fritzmg

1

多分これは誰かに役立つでしょう。

Apache仮想ホスト構成をHTTPSに変更しようとしたが、ポートを80から443に変更しただけで、追加するのを忘れたときに、このエラーが発生しました。

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

エラー421を引き起こす構成:

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

正しい構成:

<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

同じ問題がありました。2つのシングルスロットSSLに切り替えるとうまくいきました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.