常時SSL化の方法
ウェブページを全てhttps化する常時SSLですが、常時SSL化には、多くの作業が必要です。
以下の流れで進行するとスムーズに常時SSL化ができるものと存じます。
- SSL証明書の確認・取得
- ウェブコンテンツの修正
- リダイレクトの設定
- 関連ツールの設定変更
それでは、各作業項目について、具体的な方法と、注意点をご参照下さい。
1.SSL証明書の確認・取得
問い合わせフォームやログインページ等、一部ページでSSL証明書を利用している場合も多いので、常時SSL化するにあたり、現在SSL証明書を利用しているかを確認しましょう。
SSL証明書を利用していない場合や、追加で取得が必要な場合は、SSL証明書を新しく取得して下さい。
注意点
・ SSL証明書はコモンネーム単位で申請・発行されます。
同一ドメインでもサブドメインが異なる場合は、別コモンネームの扱いとなり、別途SSL証明書が必要です。
例: www.ssl.ph を常時SSL化したい
既にログインページではSSL証明書を利用している
・ ログインページで利用しているSSL証明書のコモンネームが、
www.ssl.ph の場合
常時SSL化したいページと同様のため、利用しているSSL証明書を利用できます。
・ ログインページで利用しているSSL証明書のコモンネームが、
login.ssl.ph の場合
常時SSL化したいページと異なるため、別途、コモンネーム www.ssl.ph でSSL証明書のご用意が必要です。
・ SSL証明書のライセンスについて
一部のSSL証明書はサーバー台数分ライセンスが必要な場合があります。
現在利用しているSSL証明書と常時SSL化したいページで、コモンネームが一致していても、運用サーバーが異なる場合は、ライセンスの追加や別途SSL証明書の取得が必要です。
2.ウェブコンテンツの修正
■ソースコードのリンクやパスの確認
各ページについて、リンク先や参照先のパスの記述を確認・変更して下さい。
・ 絶対パスの箇所
絶対パスで記述している箇所については、[http]で記述している箇所は全て、[https]へ記述を変更する必要があります。
例: jQuery ライブラリを外部サイトから読み込んで使用
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.x.x/jquery.min.js"></script>
注意点
※ [http]から[https]へ変更が行われていても、外部リソースの提供元がhttpsに対応していない場合は、ブラウザの注意表示の対象となってしまいます。
外部からフォント、ライブラリ、画像・動画、SNSの評価ボタン、広告系のバナーやタグ等の外部リソースを読み込んでいる場合は、以下の点についてご確認・ご調整下さい。
〇httpsに対応していない場合の対応方法
- 外部リソースの提供元がご自身で管理しているサーバー等、調整が可能な場合は、常時SSL化に伴い、外部リソースの提供元についても、httpsへの対応を実施下さい。
- 外部リソースの提供元が他社等、ご自身で調整が出来ない場合
- 外部リソースがダウンロードして利用が可能な場合
提供元からダウンロードして、対象サイトや、https に対応した別サイトへ設置し、パスの記述を変更下さい。 - 外部リソースをダウンロードして利用できない場合
httpsに対応した別の提供元へ変更する必要があります。
- 外部リソースがダウンロードして利用が可能な場合
・ 相対パスの箇所
相対パスやサイトルート相対パスで記述している箇所については、基本的に変更は不要です。
例: ダウンロードした jQuery ライブラリをサイト内に設置して使用
<script type="text/javascript" src="設置ディレクトリ/jquery.min.js"></script>
注意点
※ 相対パスやサイトルート相対パスで記述している箇所につきましても、常時SSL化に伴い、ファイルの位置関係を変更する場合は、変更に合わせて、記述の変更が必要となります。
3.リダイレクトの設定
ウェブコンテンツの修正が終わったら、全てのアクセスをhttpsへ一本化する設定を行います。
httpsへ一本化する方法はいくつかありますが、今回は、301リダイレクトとHSTSについてご案内致します。
■301リダイレクトの設定
301リダイレクトとはURLが変更となった際に、変更前のURLから、変更後のURLへ転送を行う設定です。
リダイレクトには301と302がありますが、301は恒久的な移転の際に、302は一時的・メンテナンスの際等に使われる事が多いです。
常時SSL化は一時的なものではないので、301リダイレクトにて行うのが一般的だと思われます。
301リダイレクトの設定方法は、対象サイトで利用しているウェブサーバーによって対応方法が異なります。
Apacheでは[.htaccessファイル]や[httpd.confファイル]で、IISでは[インターネット インフォメーション サービス (IIS) マネージャー]にて行います。
[.htaccessファイル]での記述例は下記の通りです。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
パラメータの内容は下記の通りです。
- RewriteEngine
アクセスのあったURLを書き換えてから処理するApacheのRewrite機能のON/OFFを記載します。
記述例では機能を有効にするため[on]を指定しています。 - RewriteCond
Rewrite機能を適用する条件を記載します。
記述例では「アクセスのあったURLがhttpsではない場合」を指定しています。 - RewriteRule
Rewrite機能のルールを記載します。
記述例ではURLをhttpsへ書き換えてから処理するように指定しています。
注意点
ご案内の記述例は、最低限のパラメータのみの記述となります。
ご利用のサーバー環境によっては、記述例の記述だけではパラメータが不足し、無限ループとなってしまう場合もあります。
また、WordPress等のCMSでは、[.htaccessファイル]の設置とは別に、管理画面での設定が必要となる場合もあります。
301リダイレクトを実施の際は、サーバー環境やCMS、その他プログラム類等につきまして、よくご確認の上、記述内容の調整、必要な設定を行った上で、行って下さい。
本番環境と同じ仕様のテスト環境を用意し事前に検証することや、サーバーや各種サービスの提供元にご確認・ご相談いただいた上で、実施されることもご検討下さい。
■HSTSの設定
HSTS(HTTP Strict Transport Security)とは、httpではなく、httpsでアクセスするように、ウェブサーバーからウェブブラウザへ働きかける機能です。
HSTSの設定を行った対象ドメインサイトへ、HSTSに対応したウェブブラウザで、httpsでアクセスすると、ウェブブラウザは、対象ドメインサイト側で任意に設定された期間の間、対象ドメインサイトへアクセスする際は、必ずhttpsでアクセスするようになります。
httpでの接続を行わないようになるため、ユーザーはより安全にウェブサイトの利用が行えます。
※ 301リダイレクトの場合、httpでアクセスされた後に、httpsへ転送されるため、最初のhttpでのアクセスは暗号化されません。
そのため、インターネット接続環境によっては、傍受や改ざんが行われる等の中間者攻撃の被害にあう可能性があります。
HSTSの設定方法は、対象サイトで利用しているウェブサーバーによって対応方法が異なります。
Apacheでは[.htaccessファイル]で、IISでは[インターネット インフォメーション サービス (IIS) マネージャー]にて行います。
[.htaccessファイル]での記述例は下記の通りです。
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
パラメータの内容は下記の通りです。
- max-age
HSTS設定の有効期間で、単位は秒です。
記述例では[31,536,000秒=1年]での設定となります。 - includeSubDomains
サブドメインすべてでHSTSを有効にする際に利用します。
サブドメインにたいしてはHSTSを無効としたい場合は、省略が可能です。 - preload
後述のプリロードHSTSの設定を行う際に必要なパラメータです。
プリロードHSTSの設定を行わないのであれば、省略が可能です。
注意点
※ HSTSはhttpsアクセスし、有効なSSL証明が確認できた場合にのみ有効に機能します。
- httpでアクセスした際
- 有効なSSL証明書が確認できなかった際
はブラウザはHSTSの設定を無視し、有効に機能しません。
[.htaccessファイル]で設定、http、httpsでコンテンツの置き場が異なる場合は、かならずhttpsのドキュメントルートへ[.htaccessファイル]を設置するようにして下さい。
■プリロードHSTSの設定
プリロードHSTSとは、プリロードリストを元に、対応ブラウザでプリロードリストに登録のあるドメインサイトへアクセスを行う場合、初回のアクセスであっても、httpsでのアクセス行わせる仕組みです。
[.htaccessファイル]で設定する際に、includeSubDomains、preloadのパラメータも省略せずに記載を行うとともに、プリロードリストへ登録することで、機能させることができます。
プリロードリストとして、Chromeのリストがあります。
Chromeのリストに登録することで、以下主要ブラウザでプリロードHSTSが有効となります。
- Chrome
- IE
- Edge
- Firefox
- Safari
- Opera
なお、プリロードHSTSの登録を行うには、パラメータの設定以外にも、多くの条件があります。
- 有効なSSLサーバ証明書を使用している
- 同一ホストで http から https へリダイレクトされている
- 全てのサブドメインが https 化されている
- 登録リクエストするドメインに以下の内容で HSTSヘッダーが設置されている
- max-age が最低18週間(10,886,400秒)設定されている
- オプション includeSubDomains を記載している
- オプション includeSubDomains で preload を設定している
- https サイトからの追加リダイレクトがある場合、リダイレクトするサイトにHSTSヘッダーが設置されている
注意点
※ 一度プリロード HSTS に登録されると、証明書の更新を忘れて期限が切れてしまった場合など、HSTS や https 接続を一時的に停止し http で接続したい場合でも https へ強制的にリダイレクトされてしまうため、サイト運営者にとっては不便な場合もあることから登録には十分な注意が必要です。
プリロード HSTS に登録されたドメインは削除申請を行うことでリストからの削除が可能です。
4.関連ツールの設定変更
ウェブサイトの運営管理で、ツールを使用している場合、使用しているツールによっては、設定の変更が必要です。
例えば、Googleが提供している各種ツールの場合は、以下の様な設定変更が必要です。
■Google Analytics
Google Analytics の計測タグは標準で https に対応しているため、設定変更などの作業は必要ありません。
■Search Console(旧ウェブマスターツール)
・サイトを登録
常時SSL化に伴い URL が変更になりますので、別サイトとしてプロパティを追加登録します。
・サイトマップを送信
XML ファイルのサイトマップを設置している場合は、Google の検索ロボットが常時SSL化した新しい URL をクロールするように追加登録した新しい URL のダッシュボードから送信します。
・インデックス登録リクエスト
常時SSL化の作業を終え、検索ロボットによるクローリングを対応して欲しい場合は、「Fetch as Google」画面からインデックス登録をリクエストします。