なぜ最近になってHTTPS化(常時SSL化)が叫ばれているのでしょうか?
ひと昔前までは、HTTPS通信はお問い合わせフォームやクレジットカードの利用フォームくらいにしか必要がありませんでした。
ですが多くのサイトがログイン情報や個人情報を必要とするようになり、
通信データの暗号化といったセキュリティ対策の向上が進められてきたのです。
GoogleChromeやIEといった多くのブラウザもセキュリティ向上の目的として、SSL化していないサイトはユーザーに簡単にわかるような機能を盛り込んでいます。
最近ではGoogleChromeはSSL化していないサイトを表示しようとすると、以下の画像のように「プライバシーが保護されません」というような警告が表示されるようになりました。
こんな画面を見たら、中身は問題のサイトであっても、「怪しいサイトかもしれない。このホームページを開くのはやめておこう」と、
せっかくホームページの入り口まで来たユーザーを逃してしまいかねません。
また、Google検索においてもSSL化しているかどうかが一つの基準となっているようで、
SSL化していないホームページは検索順位が不利になってしまうといった問題があります。
今回はどうやったら自分のホームページをSSL化できるのか?
その方法を解説していきたいと思います。
HTTPSとは?
HTTPSとは「Hypertext Transfer Protocol Secure」の略称で、早い話、HTTPを暗号化したものです。
どんなものでも暗号化するにはキーが必ず必要です。
鍵がなければドアを閉めることはできません。
それと一緒です。
またキーがなくては復号化もできません。
鍵がなければドアを開けることもできません。
それと一緒なんです!
そしてインターネットとは情報を送信する側と受信する側がいます。
いかにして安全にドアの鍵を相手に渡すか?
ここで「公開鍵暗号方式」と「秘密鍵暗号方式」という2つのハイブリッド方式が使われています。
これらの方式の詳しい解説はまた後日させていただきますが、
いかに安全に鍵を渡すか?というところで使われているのが「SSLサーバー証明書」となります。
言ってしまえばSSLサーバー証明書がなければ、サイトのSSL化はできません。
SSLサーバー証明書は、有名どころではシマンテックやジオトラスト、グローバルサイン等で取得が可能です。
取得費用も大小さまざまですが、高いところでは年間数万円〜数十万円なんてところもあります。
今回ご紹介するのは、そんなサーバー証明書を無料で取得することができる「Let’s Encryptサーバ証明書」となります。
Let’s Encryptサーバ証明書とは
「Let’s Encrypt サーバ証明書」はアメリカの非営利団体組織ISRGが提供している無料SSL証明書のことです。
発行までに人の手を介さず、すべて自動化とすることで無料化を実現しているようです。
無料だからといってHTTPS通信に不具合がでるとか、そういったことはありませんのでご安心ください。
Let’s Encryptサーバ証明書を使ってWordPressをSSL化する方法
サーバ証明書の取得と設定
以下の紹介は、以下の記事で作成したWordPressに対する方法となります。
→ AWSを使ったWordPressブログサイトの立ち上げ方
その他の方法で作成された場合、設定方法が異なりますのでご注意ください。
(1)サーバーにログインする
ログインユーザーは「ubunts」となります。
※サーバーへのログイン方法がわからない場合は、次の記事をご参考にしてください。
Amazon EC2へSSH接続する方法(Linux編)
(2)次のコマンドを叩きます
1 2 3 |
git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt ./letsencrypt-auto --help |
(3)次のコマンドでApacheを停止します
1 |
sudo /opt/bitnami/ctlscript.sh stop apache |
(4)次のコマンドをたたいてスクリプトを実行します
※<domain>はサーバに割り当てているドメインに置き換えてください。
(例) www.abc-sample.jp
1 |
./letsencrypt-auto certonly -a standalone -d <domain> |
(5)以下のことを聞かれるので、自身のEmailアドレスを入力してEnterとします。
Enter email address (used for urgent renewal and security notices) (Enter ‘c’ to cancel)
(6)以下のことを聞かれるので”A”を入力してEnterとします。
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
(7)以下のことを聞かれます。ここはYでもNでも任意です。どちらか入力してEnterとします。
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let’s Encrypt project and the non-profit
organization that develops Certbot? We’d like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
すべて上手くいくと、以下のようなテキストが表示されます。
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
(8)次のコマンドでApacheを起動します
1 |
sudo /opt/bitnami/ctlscript.sh start apache |
(9)次のコマンドをたたいてSSLサーバ証明書を確認します
※さきほど同じく、<domain>は割り当てているドメイン名に置き換えてくださいね。
1 |
sudo ls /etc/letsencrypt/live/<domain> |
取得できていたら以下のようなテキストが表示されます。
cert.pem chain.pem fullchain.pem privkey.pem README
HTTPSの有効化設定
SSLサーバー証明書を取得したら、次はApacheをHTTPSに対応させましょう。
慣れていない人はここから少し難易度があがります。
4つの設定ファイルを修正していきます。
(1) /opt/bitnami/apache2/conf/httpd.confのコメントアウトを外す
次のコマンドで設定ファイルをVIモードで開きます。
1 |
sudo vi /opt/bitnami/apache2/conf/httpd.conf |
httpd.confにssl用の設定ファイルを別途インクルードするように書き換えます。
※以下のようにコメントアウト(#)を削除してください。
[blue-waku]#Include conf/extra/httpd-ssl.conf
↓
Include conf/extra/httpd-ssl.conf[/blue-waku]
保存してVIモードを閉じてください。
まずは1つ目の設定ファイル書き換え完了です。
(2) /opt/bitnami/apache2/conf/extra/httpd-ssl.confの編集
次のコマンドで設定ファイルをVIモードで開きます。
1 |
sudo vi /opt/bitnami/apache2/conf/extra/httpd-ssl.conf |
取得したSSLサーバ証明書をそれぞれ指定してあげましょう。
以下の表の通り、”httpd-ssl.conf”ファイルについて3箇所修正します。
No | 修正内容 |
---|---|
1 | SSLCertificateFile "/opt/bitnami/apache2/conf/server.crt" ↓ SSLCertificateFile "/etc/letsencrypt/live/<domain>/cert.pem" #SSLCertificateFile "/opt/bitnami/apache2/conf/server.crt" |
2 | SSLCertificateKeyFile "/opt/bitnami/apache2/conf/server.key" ↓ SSLCertificateKeyFile "/etc/letsencrypt/live/<domain>/privkey.pem" |
3 | #SSLCertificateChainFile "/opt/bitnami/apache2/conf/server-ca.crt" ↓ SSLCertificateChainFile "/etc/letsencrypt/live/<domain>/chain.pem" #SSLCertificateChainFile "/opt/bitnami/apache2/conf/server-ca.crt" |
2つ目の設定ファイル書き換え完了です。
(3) /opt/bitnami/apache2/conf/bitnami/bitnami.confの編集
次のコマンドで設定ファイルをVIモードで開きます。
1 |
sudo vi /opt/bitnami/apache2/conf/bitnami/bitnami.conf |
[blue-waku]# Default SSL Virtual Host configuration
※ここからファイルの最終行まですべてコメントアウト[/blue-waku]
保存してVIモードを閉じてください。
3つ目の設定ファイル書き換え完了です。
(4) /opt/bitnami/apache2/conf/extra/httpd-ssl.confの編集
次のコマンドで設定ファイルをVIモードで開きます。
1 |
sudo vi /opt/bitnami/apache2/conf/extra/httpd-ssl.conf |
[blue-waku]</VirtualHost>
↓
Include “/opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf”
</VirtualHost>
Include “/opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf”[/blue-waku]
保存してVIモードを閉じてください。
これですべての設定ファイル書き換え完了です。
wp-config.phpの設定変更
WordPressをSSL化する場合、”wp-config.php”ファイルの設定変更も必要です。
(1)次のコマンドをたたきます
1 |
cd /opt/bitnami/apps/wordpress/htdocs |
(2)次のコマンドたたいてVIモードで設定ファイルを修正します
1 |
vi wp-config.php |
以下のように修正します。
define(‘WP_SITEURL’, ‘http://’ . $_SERVER[‘HTTP_HOST’] . ‘/’);
define(‘WP_HOME’, ‘http://’ . $_SERVER[‘HTTP_HOST’] . ‘/’);
↓
define(‘WP_SITEURL’, ‘https://’ . $_SERVER[‘HTTP_HOST’] . ‘/’);
define(‘WP_HOME’, ‘https://’ . $_SERVER[‘HTTP_HOST’] . ‘/’);
保存してVIモードを閉じてください。
(3)最後にApacheの再起動をして完了です。
次のコマンドでApacheを再起動してください。
1 |
sudo /opt/bitnami/ctlscript.sh restart apache |
お疲れ様でした!以上で完了です。
ブラウザに「https://<ドメイン>」を入力してホームページが表示されることを確認してみましょう。