常時SSL

スポンサーリンク

概要

常時SSL とは、常に https による接続が可能であること、つまり全ページが https で参照することが可能なことを指します。
自分的には常時SSL という用語自体はかなり前から聞いていましたが、Google が常時SSL であることをランキングに取り入れることを発表してから爆発的に広まったイメージです。

常時SSL にする理由

前項にも記載しましたが、Google が推奨したことにより世の中的に爆発的に流行りだしたのだと思います。
Google 曰く、https で参照可能であることは「安全なページ」であるとみなすらしく、そのためページランキングにも影響が出てくることを明言しています。
つまり、SEO 対策の一環となります。

しかし、そもそも SSL 対応する意味としては、パケットを暗号化することによる通信の盗聴・改竄の防止、または、認証局によって証明されていることによるサイトのなりすましの防止といったものがあり、当然これらについても大きなメリットです。
逆にデメリットとしては、通信の複雑化による負荷の増加や、証明書を保守しないといけないので作業量(コスト)の増加などが考えられますが、たいていのサイトではこれらはほとんど問題にはならないと思います。
従って、特別な理由が無い限りは、常時SSL とすることはメリットの方が大きいと考えられます。

無料の証明書

あえてデメリットの点で証明書の取得に費用がかかることを明記しませんでしたが、現在では Let’s Encrypt のような無料で取得可能な証明書が存在します。
従って、導入する手間は若干ありますが、基本的には無料で常時 SSL が実現できる時代となりました。
もちろん、認証局の信頼性を求めるのであれば有料のものを使用するべきですが、それほど信頼性が必要なケースでなければ無料のもので十分かと思います。
Let’s Encrypt の導入方法については、Let’s Encrypt を参照。

http アクセスについて

常時SSL は全ページが https でアクセス可能というだけの話なので、http アクセスについては特に意識されていないように思えます。
しかし、http と https 双方でアクセスできてしまうのは弊害がいろいろありますので、どうせなら http アクセスは全て https へリダイレクトさせてしまうのがベストではないかと思います。

リダイレクトさせてしまうだけなら簡単です。
Let’s Encrypt ではインストール時に設定されますが、http な設定の方で、以下のような類の設定をすればOKです。

 RewriteEngine On
 RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,QSA,R=permanent]

これだけでも目的は達しているのですが、HSTS(HTTP Strict Transport Security) 設定を行っておくと万全かと思います。
HSTSとは、現在接続しているドメインに対するアクセスにおいて、次回以降 http ではなく、https を使うようにサーバ側からブラウザへ伝達する仕掛けです。
以下の設定を該当する https の VirtualHost 設定内に記載します。

 Header set Strict-Transport-Security "max-age=315360000"

サブドメインも含める際には以下のようになります。

 Header set Strict-Transport-Security "max-age=315360000; includeSubDomains"

上記の max-age は期限の設定で、315360000秒=1年です。

AWSの場合

AWS の場合は ELB を経由して https を実現することがほとんどだと思います。
ELB を使ったケースでの http -> https のリダイレクト方法は AWS での推奨方法が下記で公開されています。

ELB を使用して HTTP トラフィックを HTTPS にリダイレクトする

ELB 単体ではリダイレクトは実現できないようで、Apache であれば下記のような設定を追加しておくことを推奨しているようです。

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
</VirtualHost>

コメント

タイトルとURLをコピーしました