ASP.NET: WebサイトのURLを「http」から「https」に強制的にリダイレクトさせるには
今日インターネットは多くの人が利用していて日常生活にかかせないものになっています。
そのため不正アクセスや通信経路の盗聴、データ改ざん、サーバー犯罪などが一般化しています。
通信内容が暗号化されていない「http」は、このような犯罪が行われる可能性が高く、決して安全とは言えません。
「http」と「https」の違いは、通信が「暗号化」されているかどうかです。
「http://」から始まるWebサイトは暗号化されておらず、「https://」から始まるWebサイトは暗号化されて通信されます。
簡単に言えば、「https」とは「http」にセキュリティ機能を追加したものです。
ちなみに「https」とは「Hyper Text Transfer Protocol Secure」の略称です。
SSL (Secure Socket Layer)とは、「通信内容を秘匿する暗号機能」「通信相手の真正性」「通信データが改ざんされていないか検知する機能」
の3つの機能を持った通信規約(プロトコル)です。
暗号化されている「https」は「http」よりも安全と言えます。
しかし、厳密には「通信相手が正しい場合」でないとデータを守ることはできません。
そこで、通信相手を確認する手段として「証明書(SSLサーバ証明書)」があります。
SSLサーバ証明書とはSSL暗号通信時に利用する証明書です。
電子証明書のひとつでサーバに対する印鑑証明書のような役割があります。
SSL/TSL通信の暗号化に使用する公開鍵(暗号鍵)とコモンネーム(FQDN)やドメインの所有者情報を、
認証局が紐付けて証明書を発行します。
発行されたSSLサーバ証明書はWebサーバやメールサーバにインストールします。
SSLサーバ証明書の確認手順
SSLサーバ証明書には「ドメイン認証」「企業認証」「EV認証」の3種類あります。
ここではドメイン認証の確認手順を説明します。
以下の手順は当サイトをWindowsのChromeで閲覧することを前提に説明します。
説明文の左側に図の画像が表示されていますが縮小されています。
画像を拡大するにはマウスを画像上に移動してクリックします。
画像が拡大表示されます。拡大された画像を閉じるには右上の[X]をクリックします。
画像の任意の場所をクリックして閉じることもできます。
-
Windowsからブラウザ(Google Chrome)を起動したら検索窓に当サイトのURL「https://money-or-ikigai.com/」をコピペ(Copy & Paste)します。
-
当サイトのトップページが表示されたらURLの左側に鍵のアイコンが表示されていることを確認します。
マウスを鍵のアイコンに移動してクリックします。
図をクリックすると拡大表示します。
図の下に表示されているキャプション[図1]上にマウスを移動すると図の説明が表示されます。
-
証明書のウィンドウが表示されたら[証明書(有効)]をクリックします。
-
これでサイトの証明書情報が表示されます。
証明書の「全般」タブには「発行先」「発行者」「有効期限」等が表示されます。
[OK]をクリックして「証明書」を閉じます。
URLをリダイレクトさせる手順
ここで「http」でリクエストされたWebフォーム(Webページ)を強制的に「https」にリダイレクトさせる手順を説明します。
なお、ここではMicrosoftのASP.NET 4.x Frameworkを使用していることを前提に説明します。ASP.NET Core等のサイトでは動作しません。
-
VS2019(Visual Studio 2019 or Visual Studio 2022)を起動したらWeb.configファイルを開きます。
フォルダ毎に複数のWeb.configを作成している場合はルートのWeb.configを開きます。
-
Web.cofigが表示されたら<configuration>...</configuration>の間に <system.webServer>... </system.webServer>を追加します。
これで「http」でリクエストされたWebフォーム(Webページ)が強制的に「https」にリダイレクトされます。
試しに、ブラウザのURLに「http://money-or-ikigai.com/」を入力してみてください。強制的に「https://money-or-ikigai.com/」にリダイレクトされるはずです。
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect 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" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
操作手順
-
「http」で始まるリンクが2個表示されていますのでリンクをクリックします。
-
ブラウザの新規タブにWebフォーム(Webページ)が表示されます。
ブラウザのURLの左側に鍵のアイコンが表示されることを確認します。
鍵アイコンが表示されればリダイレクトされたことになります。