常にSSLにアクセスさせるには

http://でアクセスきてませんか

https://のアクセスに自動変換しよう

WEBサイトのURLというと、https://で始まりますが、少し前まではhttp://が主流でした。
今ではほとんどのWEBサイトがhttps://で運用されています。
https://をSSL通信といいますが、このSSLを利用することで、WEBサイトを見た時に、WEBサイトと皆さんのパソコンとの間のデータされます。
そのため、通信を傍受されてもどのサイトでどういうことをしていたのか、どういうデータの送受信があったのかはわからなくなります。

一時期、カフェなどのWi-Fiが暗号化されていないということで、カフェにいてWEBサイトを見るとどのページでどういうことをしているか、ログインしたときのID、パスワードなどが簡単に傍受できてしまうということが話題となりました。

それでは、WEBサイトの運営者の立場からお話すると、世の中SSLが当たり前になってきたので、SSLをWEBサーバに設定し、https://でアクセスできるようにしたとします。
しかし、今までいろんなサイトなどにあなたのWEBサイトへのリンクが掲載されていた場合、それらはhttp://となっています。そのため、それらのリンクをhttps://に変更してもらいたいが実際には難しい。

それではhttp://でアクセスしてきたユーザーをhttps://にアクセスを自動で切り替える方法を3つ説明させていただきます。ここではIISを利用しますが、linux系を使われている方がより簡単に変更することができます。

(1)URL Rewriteモジュールを使う
(2)Web.configを編集してリダイレクトルールを追加
(3)IISの「HTTPリダイレクト」機能を使う

URL RewriteモジュールはIISでURLのリダイレクトや書き換えを行うための最も強力で柔軟なツールです。URL Rewriteを使ってHTTPからHTTPSへのリダイレクトルールを作成することができます。

(1)URL Rewriteモジュールを使う
1. URL Rewriteモジュールのインストール
URL Rewriteモジュールがインストールされていない場合、Microsoftの公式サイトからダウンロードしてインストールします。

2. IISマネージャーでルールを作成
2-1.IISマネージャーを開く
IISマネージャーを開き、リダイレクトを設定したいWebサイトを選択します。
2-2.URL Rewriteの設定
Webサイトの**「URL Rewrite」**アイコンをダブルクリックします。
**「Add Rule(s)」をクリックし、「Blank rule」**を選択して空のルールを作成します。

2-3.リダイレクトルールの作成
ルール名: 「Redirect HTTP to HTTPS」など、分かりやすい名前を付けます。

2-4.条件の設定
「Match URL」部分で、Requested URLをMatches the Patternに設定し、URLパターンは(.*)にします(すべてのURLにマッチ)。

2-5.条件の追加
「Conditions」セクションで、**「Add」**をクリックします。
Condition input: {HTTPS}
Check if input string: Does Not Match the Pattern
Pattern: on

2-6.アクションの設定
Action type: Redirect
Redirect URL: https://{HTTP_HOST}{REQUEST_URI}
Redirect type: Permanent (301)

2-7.保存
設定が完了したら「Apply」をクリックしてルールを保存します。

(2)Web.configを編集してリダイレクトルールを追加

Web.configファイルを編集して、HTTPからHTTPSへのリダイレクトを設定することも可能です。この方法はURL Rewriteモジュールがインストールされていない場合や、直接設定を行いたい場合に使います。

Web.configファイルの場所:

WebサイトのルートディレクトリにあるWeb.configファイルを編集します。
Web.configにリダイレクトルールを追加を行います。



<;configuration>
  <;system.webServer>
    <;rewrite>
      <;rules>
        <;rule name="Redirect HTTP to HTTPS" stopProcessing="true">
          <;match url="(.*)" />
          <;conditions>
            <;add input="{HTTPS}" pattern="off" ignoreCase="true" />
          <;/conditions>
          <;action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
        <;/rule>
      <;/rules>
    <;/rewrite>
  <;/system.webServer>
<;/configuration>


Web.configの説明です。
1.<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
ルール名を付け、適用後に他のルールの処理を停止します。
2.<match url="(.*)" />
すべてのURLに一致するように設定。
3.<conditions>
{HTTPS}が"off"の場合にリダイレクトを実行。
4.<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
リダイレクトのアクションを指定し、HTTPからHTTPSに変更します。

(3)IISの「HTTPリダイレクト」機能を使う

3つ目の説明です。

IISの「HTTPリダイレクト」機能を使って、すべてのリクエストをHTTPSにリダイレクトすることもできます。

1.IISマネージャーでWebサイトを選択
IISマネージャーを開き、リダイレクトしたいWebサイトを選択します。

2.HTTPリダイレクトの設定
**「HTTP Redirect」**をダブルクリックします。
「Redirect requests to this destination」にhttps://www.example.comと入力します。
「Redirect type」は**Permanent (301)**を選択します。
この設定を保存することで、HTTPからHTTPSにリダイレクトされます。
注意: この方法では、wwwあり・なしやサブドメインなどすべて同じURLにリダイレクトしてしまうため、URLの柔軟性に欠けます。より詳細な制御が必要な場合は、URL Rewriteを使った方法が推奨されます。

注意点
1.SSL証明書の設定
HTTPからHTTPSにリダイレクトするには、まずサイトにSSL証明書を設定する必要があります。証明書が適切にインストールされていないと、HTTPSへのリダイレクトが正常に動作しません。

2.SEOへの影響
301リダイレクトを使用すると、検索エンジンにとって「ページが恒久的に移動した」と見なされます。これにより、HTTPSページのSEOが適切に引き継がれます。

3.キャッシュの影響
変更後、ブラウザのキャッシュの影響でリダイレクトがうまく動作しない場合があります。テスト時にはキャッシュをクリアするか、シークレットモードで確認してください。

まとめ
IISでHTTPからHTTPSにリダイレクトする方法には、以下の手段があります

URL Rewriteモジュールを使用については
最も柔軟で一般的な方法です。ルールを作成して、HTTPからHTTPSにリダイレクトします。

5.Web.configでリダイレクトルールを設定
Web.configに直接記述することでリダイレクトを設定することも可能です。

HTTPリダイレクト機能を使用については
簡単に設定できますが、特定のURLにリダイレクトしてしまうため、細かな制御が難しい場合があります。
これらの方法を使うことで、ユーザーがHTTPでアクセスしてもHTTPSに自動でリダイレクトされ、安全な接続を提供することが可能になります。

以上、IISの設定によりhttps://(SSL)を利用するように設定する方法でした。
プログラムから設定することも可能ですが、今後の変更などにも工数が発生するため、できればIIS(WEBサーバ)で対応されることをおすすめします。

おすすめの記事