Webサイトの常時SSL化後のhttpからhttpsへの自動転送設定

Google Adsenseの審査合格条件の1つにサイトがSSL(https)で接続可であったり、セキュリティ意識も一般的になってきたし、無料でSSLが使えるレンタルサーバーがあったりで、SSL化するサイトは多いと思います。
でもSSL化したあと、httpからhttpsへ転送設定をしておかないと、自動的に「https://~」のURLへ転送されないので、せっかくSSL化したのにhttpで接続する人が減りません。

http接続をhttps接続へリダイレクトする設定

サイトにhttpで要求されたリクエストをhttpsにリダイレクトします。
.htaccess に以下の内容を追記してください。追記する場所は WordPressの設定の前です。

# BEGIN https Redirect
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# END https Redirect

追記した結果は以下の通りです。

SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode

# BEGIN https Redirect
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# END https Redirect

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

ブラウザにhttpsで接続するよう通知する

さらにhttpヘッダーに、HTTP Strict Transport Security ヘッダー (HSTS)を追加することにより、ブラウザに対してhttpsで接続するよう通知することができます。
.htaccess に以下の内容を追記してください。追記する場所は先のリダイレクト設定の後で良いです。

# BEGIN HSTS
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
# END HSTS

追記した結果は以下の通りです。

SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode

# BEGIN https Redirect
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# END https Redirect

# BEGIN HSTS
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
# END HSTS

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress


HTTP Strict Transport Security の プリロード

preloadフラグは、HSTS Preloadリストへの登録を希望する場合に指定します。
通常、HTTP Strict Transport Security ヘッダーは、「次回はhttpsでアクセスしてね」とブラウザに依頼する機能なのですが、HSTS Preloadリストに登録されたドメインにhttpでアクセスした場合、ブラウザは自動的にhttpsに切り替えてアクセスしてくれるようになります。2回目のアクセスではなく、初回からhttpsで接続してくれるのです。

HSTS Preloadリストは主要ブラウザで採用されているので、登録して損はないと思います。
登録は、Preload を指定した Strict Transport Security ヘッダーを送信できている状態で、HSTS Preload List Submission のサイトから申請します。

申請方法

HSTS Preloadリストに登録したいドメインを指定して、「Check HSTS preload status eligibility」ボタンを押します。

プリロード状態の適格性に問題がない場合、以下の画面が表示されますので、2つのチェックボックスをチェックし、「Submit (ドメイン名) to the HSTS preload list」ボタンを押します。

申請が完了すると、以下の画面が追加表示されます。意味は以下の通りです。

fullcolors7.com は現在、HSTS プリロード リストへの登録が保留されています。
fullcolors7.com がすべてのプリロード要件を満たしていることを確認してください、さもなければ削除されます。今後数週間の間にこのサイトを再訪し、お客様のドメインの状況を確認してください。
また、SSL Labsを使ってTLSの問題をスキャンすることもご検討ください。

SSL Labsでテストしてみた

SSL Labs でTLS問題をスキャンした方が良さげな案内だったので、スキャンしてみました。

なかなか良い成績のようです。

.htaccess の編集方法(XSERVERの場合)

サーバーパネルで「.htaccess編集」をクリックし、編集したいドメインを選択します。

「.htaccess編集」画面に遷移するので、記載内容を確認し、「.htaccess編集」タブをクリックします。

「.htaccess編集」画面で編集し、「確認画面へ進む」ボタンを押します。

確認画面でしっかり確認し、「実行する」ボタンを押します。

他のサーバーの場合

少なくとも Value-server や ロリポップは .htaccess編集画面がないので、サーバーのドキュメントルートにある、.htaccess ファイルを直接編集します。

最新情報をチェックしよう!