こんにちは、制作の奥田です。
Googleは2014年に、検索結果でHTTPSのサイトを優遇するロジックを実装しました。
これによって即座に検索結果に反映するわけではないですが、常時SSLのサイトのほうが”信用度が高いサイト”という意味でサイトの順位にも少し影響があるようです。
これを受けて、常時SSL化するサイトが続々と増えてきています。
GoogleのHTTPSサイト優遇方針で待ったなし! Webサイト常時SSL化の効果と実装ポイント
http://web-tan.forum.impressrd.jp/e/2016/06/22/23090
Table of contents
そもそもSSLって何?
アドレスバーを見ていただくと一目瞭然ですが、「https://」から始まっているページはSSL暗号化通信で閲覧しているということになります。
また、証明書の内容によって鍵マークがついていたり、緑色のバーが表示されたりします。
SSL暗号化通信とは、通常HTTPの通信ではフォーム送信時に内容が平文で送信されます。SSL通信ではデータを暗号化して送信するため、悪意のある第三者に「盗聴」やデータの「改ざん」などをされることなく安全に通信することができます。
また、SSLによる暗号化通信では、信頼のある第三者機関である認証局(CA)で発行された「サーバー証明書」を利用することで実在証明ができ、悪意のある第三者による「なりすまし」を防止することができます。
証明書の内容は認証の強度によって違います。認証の強度は大きく分けて3つの種類があります。
認証内容 | 特長 | |
---|---|---|
ドメイン認証型(DV) | ドメイン所有者の確認のみ | 暗号化通信のみを手軽に実現するのに向いています。 |
実在証明型(OV) | 企業の法的な実在証明、ドメイン所有者の確認 | 暗号化通信に加え、企業の実在証明も提供されます。 |
EVサーバ証明書(EV) | 企業の法的な実在証明、企業の物理的な実在証明、ドメイン所有者の確認 | 発行時の審査の厳格化により、企業の実在証明が強化されています。 | さらにアドレスバーの変色などにより安全性をアピールできます。
メリット・デメリット
実際に常時SSLにすることでのメリット・デメリットは何なのでしょうか?
以下にまとめてみました。
メリット
- 通信の暗号化でユーザーに安心してご利用いただける。
- 企業の実在証明が可能。
- SEO的に優位。
デメリット
- 費用がかかる。
- 認証レベルによってはいくつかの手続きが必要。
- サーバーの知識が必要(※レンタルサーバーなどでは特に知識がなくても導入できます。)
- WordPressなどのCMSなどで画像などのURLの変更が必要な場合がある。
ざっとこんな感じでしょうか。
CMSの問題はプラグインなどで対処できますし、費用がかかるという事以外、特にデメリットはないように思います。
SSL化に必要なもの
ではVPSやクラウドなどでサーバーを運用されている方向けにApache+OpenSSLでSSLを導入する手順をご紹介したいと思います。
ここからはサーバーをROOT権限でさわれることが条件です。
まず、SSLは以下の3つのものを使用して認証を行います。
SSLサーバ証明書 | SSLCertificateFile |
---|---|
秘密鍵 | SSLCertificateKeyFile |
中間証明書 | SSLCertificateChainFile |
設定ファイルの作成
まずROOTでログインします。
sudo su
そして、/etc/pki/tls/ディレクトリへ移動してください。
cd /etc/pki/tls/
秘密鍵とCSRを生成します。
openssl req -new -nodes -newkey rsa:2048 -keyout private/willstyle.key # 秘密鍵の保存ディレクトリ/秘密鍵のファイル名 -out certs/willstyle.csr # CSRの保存ディレクトリ/CSRのファイル名
※ファイル名はわかりやすいように変更してください。
いろいろと質問されるので質問に従って入力していきます。
Country Name (2 letter code) [GB]: JP State or Province Name (full name) [Berkshire]: Hyogo # 都道府県(登記されている住所) Locality Name (eg, city) [Newbury]: Kobe # 市区(登記されている住所) Organization Name (eg, company) [My Company Ltd]: will STYLE Inc. # 組織名(whoisの登録社名) Organizational Unit Name (eg, section) []: # 部署名(省略可) Common Name (eg, your name or your server's hostname) []: www.willstyle.co.jp # ドメイン Email Address []: # メールアドレス(省略可) Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: #(省略可) An optional company name []: #(省略可)
※ワイルドカードタイプは、Common Nameのサブドメイン部分にアスタリスク(*)を入力してください。(*.willstyle.co.jp)
※マルチドメインタイプは、コモンネームからひとつを選び、Common Nameに入力してください。
このようにして入力すると private/willstyle.key と certs/willstyle.csr が生成されます。
生成した秘密鍵を、root権限のみでしか読めないようにパーミッションを変更します。
chmod 400 private/willstyle.key
最後にCSRファイルを表示してコピーします。
cat certs/willstyle.csr # このコマンドで表示された内容をコピーしておいてください。
サーバー証明書の発行と中間証明書の保存
CSR(要求証明書)ファイルの内容を認証局に送信します。※この手続きは割愛します。
すると、認証ファイルが送られてきます。(認証局や、認証レベルによって手続きが違います。)
.crtという拡張子のこのファイルをテキストエディタなどで開き、内容をコピーします。
以下のコマンドで内容をペーストし保存してください。
vi certs/willstyle.crt # 内容をペーストし、(:wq)で保存して終了
最後に中間証明書を認証局から取得します。(認証局のサイトに中間証明書のページがあるのでそこから取得してください。)
こちらの内容も以下のコマンドで内容をペーストし保存してください。
vi certs/willstyle.ca-bundle # 内容をペーストし、(:wq)で保存して終了
こちらもパーミッションを変更しておきます。
chmod 400 certs/willstyle.crt chmod 400 certs/willstyle.ca-bundle
これで3つのファイルが揃いました。
SSLサーバ証明書の設定
それではApacheの設定を変更します。
まず、ssl.confファイルを作成します。
vi /etc/httpd/conf.d/ssl.conf
以下の内容を記述し保存してください。
Listen 443 NameVirtualHost *:443 SSLStrictSNIVHostCheck off
バーチャルホストの設定を記述します。
vi /etc/httpd/conf.d/vhost.conf
<VirtualHost *:443> DocumentRoot "/var/www/html/" # ドキュメントルートのパス ServerName www.willstyle.co.jp ServerAlias willstyle.co.jp ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn SSLEngine on SSLProtocol all -SSLv2 SSLCertificateFile /etc/pki/tls/certs/willstyle.crt # SSLサーバ証明書 SSLCertificateKeyFile /etc/pki/tls/private/willstyle.key # 秘密鍵 SSLCertificateChainFile /etc/pki/tls/certs/willstyle.ca-bundle # 中間証明書 </VirtualHost>
最後にサーバーを再起動します。
service httpd restart
htaccessの設定
最後に常時SSL化なのでhttpプロトコルでアクセスがあった際にhttps://へリダイレクトする設定をします。
サイトのドキュメントルートの.htaccessファイルに以下を追記してください。
RewriteEngine On RewriteCond %{HTTP_HOST} ^willstyle\.co\.jp # wwwありに統一する設定 RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ http://www.willstyle.co.jp/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^willstyle\.co\.jp # wwwありに統一する設定@SSL RewriteCond %{SERVER_PORT} 443 RewriteRule ^(.*)$ https://www.willstyle.co.jp/$1 [R=301,L] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://www.willstyle.co.jp/$1 [R=301,L]
【補足】さくらのレンタルサーバーでSSLを導入した際にhtaccessの記述が特殊だった為、ここに記しておきます。
RewriteCond %{HTTP_HOST} ^willstyle\co\.jp$ [OR,NC] RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ RewriteRule ^(.*)$ https://www.willstyle.co.jp/$1 [R=301,L]
すでに運用中のWordPressをSSL化する場合は以下のプラグインを使用すると便利です。
最後に
SSLは少しむずかしいイメージをお持ちの方も多いと思いますが、実際やってみるとそれほど難しい作業ではありません。
これを機にぜひSSLを導入してみてください。