概要
PCやスマートフォンなどのブラウザで特定のサイトを閲覧するには、必ずURLが必要になります。
URLとは、先頭が「http://」や「https://」で始まるアドレス(住所)の役割を果たしている文字列です。
2つのURLの違いは、次のようになります。
http
送受信されるデータは暗号化及び証明書での認証はされない。
そのため、盗聴や改竄されやすくなる。(安全性が低いサイト)
https
送受信されるデータは全てSSL/TLS接続(暗号化及び証明書での認証)される。
そのため、盗聴や改竄され難くなる。(安全性が高いサイト)
今までは、サイト内の問い合わせや注文情報などの、ユーザーに個人情報を入力または表示させる一部のページのみ、SSL/TLS接続に対応することがほとんどでした。
常時SSL接続とは、このようなサイト内の一部のページだけではなく、サイト全体(サイト内全てのページ)を常にSSL/TLS接続に対応させるセキュリティ対策の手法です。
導入の必要性
一見、今まで通りに個人情報などの入力または表示を行うページのみSSL/TLS接続に対応していれば大丈夫の様に思えます。
しかし、SSL/TLS接続に対応していないページにCookieデータなどの個人情報が含まれていた場合を想像してみてください。
当然、パケットデータ(送受信データ)を盗聴することが簡単にできてしまいます。
さらに、中継する端末に悪質なサーバーなどが介入していた場合は、パケット情報を改竄され、なりすました偽のサイトへ誘導することも簡単にできてしまいます。
この様な状況の中でGoogleは、2014年に常時SSL接続に対応したサイトを検索ランキングで優遇することをアナウンスしました。
さらに、2017年までにアメリカの多くの企業は常時SSL接続に対応し、日本でも大手の企業などが対応済みになってきていることから、2018年2月8日にGoogleが次のようにアナウンスを行いました。
For the past several years, we’ve moved toward a more secure web by strongly advocating that sites adopt HTTPS encryption. And within the last year, we’ve also helped users understand that HTTP sites are not secure by gradually marking a larger subset of HTTP pages as “not secure”. Beginning in July 2018 with the release of Chrome 68, Chrome will mark all HTTP sites as “not secure”.
https://security.googleblog.com/2018/02/a-secure-web-is-here-to-stay.html
要約すると、次のようになります。
Googleは数年前から常時SSL接続を強く主張してきました。2018年7月にリリースされるChrome68(ブラウザ)から、常時SSL接続されていない全てのサイトを「安全でない」 のようにはっきりとした警告で表示するという内容になります。
最終的にどのような表示になるかについては不明ですが、現状よりも厳しい警告表示になることは間違いないでしょう。
当然、他のブラウザも追従することになるはずです。閲覧に訪れたユーザーから不信感(セキュリティに無頓着な運営者)を持たれないよう、早急に対策を行う必要がでてきています。
ちなみに、現状の各ブラウザの警告状況は次のようなアイコン表示になっています。(あまり目立たない警告)
Chromeの警告例
Firefoxの警告例
Edgeの警告例
Internet Explorer 11の警告例
IEの場合、警告は表示されません。SSL/TLS接続時のみ鍵アイコンが表示されるだけです。
メリットとデメリット
常時SSL接続を導入するメリットとデメリットについては、次のようになります。
メリット
セキュリティの向上(盗聴や改竄され難い)
閲覧するユーザーに安心感を与える(セキュリティ警告が表示されない)
HTTP2が利用できる(通信速度が向上する)
SEO対策(検索キーワードのヒット数が向上する)
デメリット
導入のために作業が発生する
導入方法によっては、維持コストがかかる(有料のSSL証明書を利用する場合)
リダイレクトの発生(http接続時にhttpsへの転送設定を行う場合)
導入方法に関しては、多少の面倒は有りますが難しさはありません。また、無料で常時SSL接続を導入できるサービスもありますので、費用も安く抑えることが可能です。
リダイレクトの発生については、外部リンク(ブックマークなど)を行っているユーザーが常時SSL接続への対応を認識するまでには時間がかかります。そのため、完全に回避することは難しいですが影響度は少ないと思います。
後で説明する、クローラーへの対策を優先しましょう。
結論としては、デメリットも発生しますがメリットのほうが遥に大きいと言えます。
導入方法
ここでは、無料のSSL証明書「Let's Encrypt」を利用したStar Server(レンタルサーバー)での設定を例に導入方法について説明します。
「Let's Encrypt」は、多くのレンタルサーバーで利用されています。Star Server以外を利用している場合でも同様に設定できると思います。
その場合は、レンタルサーバー会社が提供しているアドレスなどに置換て設定を行って下さい。
まだ無料のSSL証明書を導入していないレンタルサーバーを利用している場合は、乗り換えも検討したほうが良いかもしれません。
Star Server(旧ミニバード、ファイアーバード)は、当サイトでも利用しています。興味がある方は訪問してみて下さい。
スターサーバー
Note
SSL証明書の有料と無料の大きな違いは、証明書の信頼性になります。(暗号化の信頼性は同じ)
無料の証明書:DV証明書(Domain Validation)。
有料の証明書:OV証明書(Organization Validation)、EV証明書(Extended Validation)。
ECサイトや企業イメージを高めたい場合は、なりすましなどから防御性を高める有料証明書の利用を推奨します。
導入手順の概要
サイト内リンクの置換
DNS(ネームサーバー)の確認
SSLの設定
「https://~」へのリダイレクト設定
クローラー対策
1.サイト内リンクの置換
サイト内のリンクで絶対パスを指定している場合(外部リンク先など)は、リンク先をhttpsに置き換える必要があります。
特に画像を利用してリンク先を指定している場合は、安全でないリンク先へのパスが含まれていると判断され警告が表示されてしまいます。なお、現状ではテキストへのリンクの場合、警告の表示はされないようです。
せっかく自分のサイトを常時SSL接続に対応しても、リンク先が原因で警告が表示さるようではがっかりです。
httpsに対応しているリンクの場合は置換を行い、対応していない場合は画像でのリンクをやめるか、リンクそのものを削除するなどの対応を行いましょう。
なお、Wordpressを利用しているサイトの場合は、内部リンクも絶対パスになっている場合が多いので、「Search Regex」などのプラグインツールをインストールして一括置換を行うと作業が楽になります。
2.DNS(ネームサーバー)の確認
自分のドメインが、httpsで正しく接続されるようにDNSの接続先が正しいか確認を行います。
Star Serverでサイトを運営していて外部のDNSを利用している場合は、次のように設定を行って下さい。なお、ネームサーバーの変更が切り替わるまで時間がかかります。
変更を行った場合は、サイトが表示されない時間を発生させないためにも、半日から1日程経過後に次の作業(修正ファイルのアップロードやSSLの設定)を行うなどの注意が必要になります。
ネームサーバー1
ns1.star-domain.jp (112.78.117.88)
ネームサーバー2
ns2.star-domain.jp (112.78.117.89)
ネームサーバー3
ns3.star-domain.jp (219.94.201.241)
3.SSLの設定
① Star Serverの場合は、サーバー管理ツールのSSL設定で行います。
※画像は旧Star Serverのものですが、設定項目は同じです。
② 設定を行うドメイン名を選択して下さい。
③ 「無料独自SSL追加」タブ上で、設定するサイトを選択し、「独自SSL設定を追加する(確定)」をクリックして下さい。なお、CSR情報に関しては、無料独自SSLの場合は未入力でも問題ありません。
④ 「SSL一覧」タブ上に、設定したサイトのURLが「https://~」で表示されていれば完了です。
4.「https://~」へのリダイレクト設定
常時SSL接続の設定が完了しても、外部サイトのリンクからhttpで接続された場合、自動的にhttpsへの転送はしません。
このままでは「404 Not found」が発生するでしょう。
発生を防止したい場合は、自動的に転送されるように「.htaccess」ファイルに次の記述を追加して下さい。
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
「http://~」のURLでアクセスした際、自動的に「https://~」のURLへ転送できれば設定完了です。
5.クローラー対策
「https://~」へのリダイレクト設定を行ったのですが、Googleなどのクローラー(自動巡回)にはリダイレクトを発生させないほうが良いです。
そのためには、GoogleのSearch Consoleを利用し「https://~」のURLでプロパティを新たに追加して下さい。
サイトマップも全て「https://~」のURLに変更し新たに追加しましょう。(検索エンジンのシェアが最も高いGoogleのクローラーが優先)
Note
リダイレクトが発生すると1ページ参照時に通信が2回発生します。(2ページ分参照したことになる)
WEBページの量は世界中でさらに膨大な量に増加しています。
現状、クロール数に制限はないと思われますが、制限をかけられた場合、全てのページをクロールしてもらえなくなる可能性があります。
そうなると、SEOなどにも影響を及ぼすことが考えられます。