SSLって何?どうして常時SSL化するの?
「httpじゃだめなの?」「httpからhttpsにリダイレクト出来ない(泣)」と常時SSL化で悩んでいませんか?
この記事では常時SSL化について解説していきます。前半はSSLが安全な通信であること常時SSL化とはなにか、後半ではエックスサーバーでの常時SSL化の手順を解説します。
私も苦労しました。レンタルサーバーのマニュアルを読んでも「なにそれ?.htaccessファイルなんて自分で書けるの?」とたくさん失敗してなんとか常時SSL化しました。
今は簡単に常時SSL化できるとはいえ、やはり躊躇してしまう設定です。苦労した自分を思い出しながら書きましたので、どうぞ最後までお付き合いくださいね。
SSLとは安全な通信方法のこと
SSLとはSecure Sockets Layerの略語で安全な通信方法のことです。URLの頭の部分を「http://」から「https://」に変えます。そして、URLの前後に鍵マークをつけて、通信が安全かどうかを知らせてくれます。
無料SSLでよく利される「Let’s Encrypt(レッツ エンクリプト)」はドメイン認証です。ブラウザによって「https」の表記が異なりますが基本的には同じです。
SSLの通信方法
SSL化したホームページを開く時に下のやりとりが行われています。
- ユーザーが認証を受けたホームページにアクセスする
- 見たいホームページのサーバから公開鍵証明書がパソコンに届く
- 認証局の情報が書かれている公開鍵証明書とパソコンに登録された認証局と一致するか確認する
- 一致したら、公開鍵認証書から公開鍵を取り出す
- パソコンは共通鍵を作り、公開鍵で共通鍵のスペアを暗号化する
- 暗号化した共通鍵をサーバに送る
- パソコンとサーバが共通鍵を持つ
- 共通鍵を使った通信となる
SSLの種類
SSLにもいくつかの種類があります。
無料SSLと有料SSLのちがい
無料SSLで有名なのが「Let’s Encrypt」です。このサイトも利用しています。無料と有料ではセキュリティの違いはありません。 認証の仕方が異なります。認証方法によって、フィッシング詐欺などのなりすましを防ぐ事ができます。
なんとなく「無料SSLは不安だな」と思う方は「Let’s Encrypt」が無料で提供できる理由をこちらの、「無料SSL証明書Let’s Encryptとは?」(https://ssl.sakura.ad.jp/column/letsencrypt/)に書かれていますのでどうぞ!
認証方法はDV、OV、EVの3つ
認証方法には3種類あります。ドメイン認証(DV)、企業認証(OV)、EV認証です。EVはExtended Validationで、拡張された検証という意味になります。
ドメイン認証 | 企業認証 | EV認証 | |
ドメイン名登録名義証明 | 〇 | 〇 | 〇 |
企業の実在証明 | ー | 〇 | 〇 |
厳格な審査 | ー | ー | 〇 |
価格 | 1000円~ | 5万円~ | 10万円くらい |
信頼度 | 低 | 中 | 高 |
厳格な審査を通ったEV認証はアドレスバーが緑色になり、組織名が記されます。
常時SSL化とは「https」の一本化
常時SSL化とはURLを「https://」で始まるようにすることです。SSL化は「http」を「https」に変更することをいいます。
私はSSL化しブログやホームページのURLを1本化するまでの作業を常時SSL化として理解しています。
SSL化と常時SSL化ではちょっと違い、ステップが2段階なのが常時SSL化です。SSL化しただけでは「http://」と「https://」の2つの同じブログやホームページが存在する状態のままになっています。
常時SSL化=SSL化+URL正規化
アクセスが分散され分析ができないことセキュリティが弱くなるため、「https」に一本化する作業が必要になります。URLを1つにすることをURL正規化と呼びます。
常時SSL化をする理由
通信の暗号化を行うことによってWebサイトの改ざん、通信内容の盗み見、第三者のなりすましを防ぐ事ができます。
また、2014年にGoogleがhttpsは検索順位を決定する要素の1つと公表したことにがあります。
常時SSL化を行っていない場合、アドレスバーに「保護されていない通信」と表示されます。
常時SSL化の目的
- Web改ざんを防ぐため
- 通信内容の盗み見を防ぐため
- 第三者のなりすましを防ぐため
- SEO対策
- 「保護されていない通信」と表示させないため
ドメインを取得して、レンタルサーバーを契約した時は、まだURLは「http」のままです。それを認証を行い、サーバ認証書が発行されサーバに登録すると「https」のURLができます。
URLがはじめからhttpsであれば簡単なのに、なんでSSL化しなくてはならないのでしょうか?それは、サーバーの証明書を発行する認証局は、レンタルサーバーとは別の組織だからです。
WordPressで常時SSL化しよう!
ここからは常時SSL化の方法を解説します。手順は次のとおりです。
- レンタルサーバーでSSLの設定をする
- WordPressの「WordPressアドレス」と「サイトアドレス」を書き換える
- リダイレクトを設定する
- リダイレクトされているか確認する
- ホームページ内のリンクがhttpになっていないか確認する
SSL化は面倒くさくありませんよ!まずはサクッと一気にSSL化してしまいましょう。
レンタルサーバーでSSLの設定をする
例としてエックスサーバーをメインに、さくらのレンタルサーバとコアサーバーも併せて解説していきますよ。参考にしてみてくださいね!
まずレンタルサーバーの管理画面を開きます。次にドメインのメニューからSSLの設定を選びます。
次に、SSL化したいドメインを選びます。そうすると、そのドメインがSSL化されているかされていないか分かる画面が出てきます。
「独自SSL設定追加」タブをクリックします。
設定するドメインを選び、「CSR情報(SSL証明書申請情報)を入力する」にチェックをいれます。
チェックを入れると住所や事業所の名称を入力する画面が現れます。
個人ブロガーなら、都道府県と市町村を書き換えればOKです。記入が終われば「確認画面へ進む」をクリックし、設定したいドメインに間違いがないか確認して「追加する」をクリックします。
クリックしてすぐは「しばらくお待ちください」メッセージがでます。でもしばらくすると・・・「設定しました」と表示されます。
これはSSLの設定が完了しただけの画像です。SSL設定一覧のタブに「反映待ち」の文字が消えると、SSL化完了です。
*ちなみにサブドメインのSSL化は、サブドメイン作成時にチェックを入れるだけでOKですよ!
SSL利用可能になるまで、いったん休憩しましょう!
お疲れ様です。
これでSSL化は終わりです。
WordPressでURLを書き換えよう
WordPressにログインします。メニューから設定/一般設定のWordPressアドレスとサイトアドレスの「http」を「https」に書き換えます。
もし、これでログイン出来なくなってしまったら「WordPressにログインできない!ログインループの地獄から脱出する方法」を参考にしてみてくださいね!
リダイレクトしてURLをhttpsに統一しよう
SSLが利用可能になったら、「http://~」から「https://~」に転送するように設定します。
レンタルサーバーによっては自動でhttpsへの転送やwwwあり・なしの統一ができますが、エックスサーバーは自動で転送することができませんので、自分で設定しなくてはなりません。
WordPressならプラグインを使って常時SSL化が可能ですが、基本的に「.htaccess」ファイルを使います。ほぼコピペでリダイレクトできるので一見難しそうですが、プログラムが分からなくてもなんとかなりますよ。私がそうですから!
ここからは「頭いたーい!!」が多いので
のんびり、少しずつ進んでね!
ミスして当たり前!!
慌てず行ってね
.htaccessファイルがある場所
.htaccessファイルとは「Apache(アパッチ)」を使っているサーバーでアクセスに関わる設定ができるファイルです。残念ながら契約者自身の責任で行う為、レンタルサーバーではサポート対象外になります。
「.htaccess」ファイルの変更はファイルマネージャーで直接書き込む方法がありますが、まったくはじめてファイルを触る場合はメモ帳で変更することをおすすめします。
「.htaccess」ファイルはファイルマネージャからダウンロードします。
または直接サーバーパネルのホームページのメニューの中から選びます。
.htaccessファイルの書き方
「.htaccess」ファイルを開いたら、以下のコードをコピペします。
#httpからhttpsへリダイレクト
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
「mod-rewrite」という機能(モジュール)を使います。「mod-rewrite」は、あるURLにきたアクセスを別のURLに転送することができます。
「RewriteEngine On」は「mod-rewriteを仕様します」という宣言です。.htaccess内に1つだけで大丈夫です。
「RewriteCond %{HTTPS} off」は「http://」のSSL化していないURLでアクセスした場合という意味です。
「RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}」は「https://のアドレスに書き換えてくださいね」という意味になります。
[R=301,L]の「R=301」は恒久的に、「L」は終わりの意味です。R=302やRだけというのもありますが、それは一時的に転送する場合に使います。
リダイレクト出来ない場合はアップロード先を確認しよう
.htaccessファイルは同じ階層とそれ以下の階層に働きます。
.htaccessファイルをアップロードしたらすぐにリダイレクトの確認ができます。アドレスバーに「http」のURLを入力してください。すぐに「https」のURLに書き換えられれば転送されています。
もしくは「リダイレクトチェックツール」を使うと、正しく動作しているかどうかハッキリ分かりますよ。
もしリダイレクトできない、またはエラーになった場合は置く場所が間違っていないか確認してみてください。
500などのサーバーエラーの場合はファイルの書き間違えが考えられます。全角スペースが入っていないか、綴りが合っているかなど確認してみましょう。
リダイレクトが出来ても警告がでる場合はリンクや画像のURLのコードに「http://」となっている可能性があります。エラーメッセージが出る場合はこちらの記事が参考になるかもしれません。
おまけ:「https://wwwなし」にURL正規化したい場合
「httpsのwwwなし」のリダイレクトを.htaccessファイルはこんな感じになります。ご自身のURLに変えてアップロードしてください。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.sample\.com) [NC]
RewriteRule ^(.*) https://sample.com/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
前半の「RewriteCond」と「RewriteRule」はwww付きのURLの場合はwwwなしのURLに書き換えて(リダイレクト)してくださいね、という意味です。「RewriteCond」のURLは.(ドット)の前に\(バックスラッシュ)を入力します。\はお使いの状況によって¥(円マーク)になる場合があります。
後半の「RewriteCond」と「RewriteRule」はHTTPSにしてね、と言う意味ですよ。
ナイショの話:コードなしでも・・・
実はこのコードを書かなくても、WWWなしURLに転送されます。
現在(2022.10.08)エックサーバーで運用していて、うっかり半年間URLの正規化をしていませんでした。それなのに「https:///wwwあり」から「https://wwwなし」に転送できていたので、どうしてだろうと問い合わせいたしました。
ドメインをWordPressで構築されている場合、「WordPressURL」と「サイトURL」にて指定したURLへリダイレクトされますのでご留意くださいますようお願いいたします。
エックスサーバーサポートより回答いただきました。ありがとうございます。
知らなかったわ・・・。今までの苦労はなんだったの!
コアサーバーで常時SSL化する場合
1.コアサーバーにログインします。ダッシュボードのサイト設定を選びSSL化したいサイトを選びます。
2.サイトを選んだら、「サイト設定の変更」ボタンをクリックします
3.無料SSLを選びます。(独自SSLの方は独自SSLを選びます)
4.「https」で通信ができるまで待ちます。タイミングによっては数時間かかることがありますので、慌てず待ちます。
「https」で通信が可能の状態になれば、コアサーバーは自動で「http」から「https」に転送します。また「http://www」を「https://wwwなし」にも転送します。
ただ、一時的な転送を意味する302リダイレクトであること、「https://www」から「https://wwwなし」がリダイレクトできないので、別途リダイレクト設定をした方がいいでしょう。コアサーバーで「wwwあり」から「wwwなし」にしようとしたら面倒でした。
さくらのレンタルサーバでSSL化する場合
さくらのレンタルサーバの場合も、まずはサーバのコントロールパネルにログインします。
1.「ドメイン/SSL」のメニューの「ドメイン/SSL」を選びます
2.SSLの設定法を行いたいドメインを選びます。すでに設定してありますが共有SSLとSNI SSLがかかれています。SNI SSLは独自SSLのLet’s Encyptを表しています。
3.右側の設定からSSLの設定を行います。初期ドメインとさくらのサブドメインの場合は「共有SSLを利用する」を、独自ドメインの場合は「SNI SSLを利用する」を選びます。
4.併せてリダイレクトも行います。SSLを利用する場合は「HTTPSに転送する」を選びます。URLのWWWあり・なしを統一をする場合はどどちらかの転送するをチェックします。
さくらのレンタルサーバの常時SSL化はこれだけで、一番簡単かもしれませんね。さくらのレンタルサーバでの常時SSL化についてはこちらのさくらのレンタルサーバの常時SSL化はいちばん簡単化かも!【失敗談付き】記事にまとめています。ただし、失敗談もありますよ。
最後に
なんとなくイメージだけでも掴んでいただけたでしょうか?鍵って言われても、よくわからないですよね。技術は分からなくても、ホームページを公開するときには必要な技術です。お問い合わせフォームやショッピングサイトには特に重要です。
リダイレクトに失敗する場合は、「よくあるリダイレクト失敗:DLG_FLAGS_SEC_CN_INDVALD」を参考にして貰えると嬉しいです。
今はエックスサーバーを利用しています。はじめて利用したのはさくらのレンタルサーバーでした。あのときは沢山失敗しましたよ・・・。
ひさしぶりにエックスサーバーで常時SSL化したら思ったよりも簡単でした。レンタルサーバーによって設定が違うので、面倒くさい人にはエックスサーバーはオススメだと思います。