9

HTTPS と www を強制する書き換えルールがあります。SSL 証明書は、サイトの www バージョン用です。サイト全体が HTTPS である必要があります。

問題は、リクエストがhttps://example.com/の場合、リダイレクトを実行する前にブラウザが警告ページを表示することです。(Firefox では「この接続は信頼されていません」、Chrome では「これはおそらくあなたが探しているサイトではありません!」)

ユーザーが Firefox で例外を追加するか、Chrome でエラーを無視すると、書き換えルールが実行され、100% 安全なページでサイトの www バージョンにリダイレクトされます。

RewriteEngine on

RewriteCond %{HTTP_HOST} ^example.com$ [OR]
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

サイトとhttp://martinmelin.se/rewrite-rule-tester/でルールをテストしています。

ブラウザの警告の前にリダイレクトを実行するにはどうすればよいですか?

4

2 に答える 2

9

https://example.comからへのリダイレクトはhttps://www.example.com、クライアントがへの最初の正常な要求を行った後にのみ発生しますhttps://example.com

これは、HTTPSがHTTP over TLS / SSL(RFC 2818を参照)であり、HTTPトラフィックが送信される前にSSL/TLS接続を最初に確立するためです。mod_rewriteSSL/TLS接続が確立された後に常に適用されます。証明書が検証される前に攻撃者がクライアントを書き換えてリダイレクトする可能性があるため、そうしないと実際にはセキュリティの問題になります。TLSアップグレードがHTTP(RFC 2817、事実上使用/サポートされておらず、httpsではない)内であったとしても、信頼できるエンティティからリダイレクトを行う必要があります。

この最初の接続が機能するには、サーバーにhttps://example.com有効な証明書が必要ですexample.com。そうでない場合、この接続は発生しません(サーバーはリダイレクト応答を送信しません)。

目標を達成するには、に有効な証明書を提示するためのリクエストと、にhttps://example.com有効な証明書を提示するためのリクエストが必要です。example.comhttps://www.example.comwww.example.com

2つの解決策があります:

  • 個別のIPアドレスを使用するか、サーバー名表示を使用して、ホストごとに2つの個別の証明書を使用します。ここでの欠点は、SNIが一般的になったとしても、すべてのクライアントがSNIをサポートしているわけではないことです。
  • example.comとの両方に有効な単一の証明書を使用しwww.example.comます。これは、複数のサブジェクト代替名(SAN)DNSエントリを持つ証明書を取得することで実現できます(*.example.comドットがワイルドカードパターンの一部ではないため、この証明書は機能しません)。

後者は確かに最も簡単な解決策です。CAが、両方のSANエントリを持つ証明書を発行することは非常に一般的であり、どちらexample.comwww.example.com一方を申請するときに、追加料金なしで発行することもあります。

于 2012-07-25T11:20:07.100 に答える
1

この投稿はあなたの問題に対処し、次の回答を提供します。

無効な証明書の問題を回避するには、example.com の証明書が必要です。セキュリティ上の理由から、認証前のリダイレクトは許可されていません。

別のオプションは、ワイルドカード証明書を取得することです。これにより、 *.example.com. (どうやらこれはうまくいきません。@Gielに感謝します)

http://example.com/にリダイレクトすることもできhttps://www.example.com/ますが、既にユーザーが にアクセスしている場合は役に立ちませんhttps://example.com/

于 2012-07-24T22:28:20.507 に答える