問題
現在、 https ://domain.com が https://www.domain.comにリダイレクトされず、信頼されていない ssl 証明書が表示されるという問題があります。
これは、 force_ssl の前に「www」にリダイレクトされる ruby-on -rails ソリューションに関連しています 。
質問
SSL 要件が適用される前に www ドメインにリダイレクトする方法はありますか?
私はPHPを使用しています。
問題
現在、 https ://domain.com が https://www.domain.comにリダイレクトされず、信頼されていない ssl 証明書が表示されるという問題があります。
これは、 force_ssl の前に「www」にリダイレクトされる ruby-on -rails ソリューションに関連しています 。
質問
SSL 要件が適用される前に www ドメインにリダイレクトする方法はありますか?
私はPHPを使用しています。
HTTPS は HTTP over TLS/SSL ( RFC 2818を参照) であり、HTTP トラフィックが送信される前に最初に SSL/TLS 接続を確立します。SSL/TLS 接続が確立された後、すべてのリダイレクト (mod_rewrite
カスタム PHP コードなどを介した) が常に適用されます。
そうしないと、証明書が検証される前に攻撃者がクライアントを書き換えてリダイレクトする可能性があるため、実際にはセキュリティ上の問題になります。
https://domain.com
からにリダイレクトする場合はhttps://www.domain.com
、 で取得した証明書https://domain.com
が に対して有効である必要がありますdomain.com
(さらに、 で取得した証明書https://www.domain.com
が に対して有効である必要がありますwww.domain.com
)。
(2 つのホストが同じ IP アドレスで提供されている場合は、サーバー名表示で 2 つの異なる証明書を使用できますが、これはかなり複雑です。)
domain.com
最も簡単な方法は、 と の両方に有効な証明書を取得することですwww.domain.com
。これは、複数の Subject Alternative Name エントリを持つ単一の証明書を使用して実行できます。ほとんどの CA は、そのような証明書を発行できるはずです。追加料金なしでそれを行う人もいます。
私が見つけた最善の解決策は、サブジェクトの代替名を持つ新しい SSL 証明書を購入することです。これにより、同じ証明書に www と非 www を含めることができ、両方が有効になります。このようにして、 https://wwwを安全に https:// に透過的に、証明書エラーなしでリダイレクトできます。
リダイレクト応答は、HTTP プロトコルを介して発行されます。このような応答/コマンドを受信するには、クライアントは最初に HTTP 接続を確立する必要があります。クライアントが HTTP_S_ 接続を確立しようとしている場合は、最初に SSL ネゴシエーションを完了する必要があります。
言い換えれば、いいえ。アプリの URLhttps://domain.com
が無効です。クライアントはこの特定のアドレスを知ることさえできないため、アクセスを試みるべきではありません。クライアントがアクセスしようとしないように、この URL をどこにも教えないようにする必要があります。実際、あなたはそのドメインで HTTPS サーバーを実行したくないようです。そのため、実際には無効にする必要があります。そうすれば、クライアントはdomain.com
HTTPS 経由でまったく接続できなくなります。