無料SSLサーバ証明書「Let’s Encrypt」導入

当サイトではSSL通信のために、過去に作成した「オレオレ証明書」を使用してきたが、無料SSLサーバ証明書「Let’s Encrypt」の登場に伴い、第三者機関に証明されているマトモ(?)な証明書へ移行することにしたので、WordPressの設定変更等を含め、その手順をざっくりとご紹介。
なお、以下は当サイトの環境Ubuntu 14.04 LTS+Apache2.4.7向けの手順であることにご注意。
1.参考
より正確かつ詳細な手順は、以下本家サイトまたは総合ポータルサイト(日本語)を参照。
2.インストール
GitHubからLet’s Encryptクライアントのソースコードを取得し、まずはletsencrypt-auto
コマンドを--help
オプション付きで実行する(sudo可能なユーザである必要)。
$ git clone https://github.com/letsencrypt/letsencrypt $ cd letsencrypt $ ./letsencrypt-auto --help
不足するパッケージ等があれば、上記タイミングで自動的にインストールされる(このタイミングではまだ証明書は作成されない)。
3.SSL/TLSサーバ証明書作成
続けて以下を実行。
$ sudo service apache2 stop $ ./letsencrypt-auto certonly -a standalone -d www.k4750.net $ sudo service apache2 start
証明書発行のために一時的にポート80を使用するそうなので、一時的にApacheを停止している。/etc
配下を覗いてみると、
# ls -l /etc/letsencrypt/live/www.k4750.net/ total 0 lrwxrwxrwx 1 root root 37 Mar 12 20:56 cert.pem -> ../../archive/www.k4750.net/cert1.pem lrwxrwxrwx 1 root root 38 Mar 12 20:56 chain.pem -> ../../archive/www.k4750.net/chain1.pem lrwxrwxrwx 1 root root 42 Mar 12 20:56 fullchain.pem -> ../../archive/www.k4750.net/fullchain1.pem lrwxrwxrwx 1 root root 40 Mar 12 20:56 privkey.pem -> ../../archive/www.k4750.net/privkey1.pem # ls -l /etc/letsencrypt/archive/www.k4750.net/ total 16 -rw-r--r-- 1 root root 1793 Mar 12 20:56 cert1.pem -rw-r--r-- 1 root root 1675 Mar 12 20:56 chain1.pem -rw-r--r-- 1 root root 3468 Mar 12 20:56 fullchain1.pem -rw-r--r-- 1 root root 1708 Mar 12 20:56 privkey1.pem
設定に必要なファイルが一通り作成されていることが確認できた。試しにopenssl
コマンドで証明書の有効期間を確認してみると、
# openssl x509 -text < /etc/letsencrypt/live/www.k4750.net/cert.pem Certificate: ...... Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X1 Validity Not Before: Mar 12 10:56:00 2016 GMT Not After : Jun 10 10:56:00 2016 GMT Subject: CN=www.k4750.net ......
3月12日~6月10日であり、90日間となっていることが分かる。
4.Apache設定
mod_sslの設定を以下のとおりとする。
SSLCertificateFile /etc/letsencrypt/live/www.k4750.net/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.k4750.net/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.k4750.net/chain.pem
ついでに証明書の自動更新設定をcronに仕込んでおく。毎月初日、AM5:00に(必要に応じて)証明書の更新を行う。
# m h dom mon dow command 0 5 1 * * service apache2 stop && /var/www/ssl/letsencrypt/letsencrypt-auto renew && service apache2 start
停止せずに更新する方法もあるようだが、、ひとまず上記で運用してみる。
5.WordPress設定、投稿内容変更
WordPressの「設定」→「一般」の「WordPress アドレス (URL)」と「サイトアドレス (URL)」を「https://www.k4750.net」へ変更。
投稿内容については、例えばサイト内のメディア(画像)へのリンクは
旧:<img src="http://www.k4750.net/wp-content/uploads/2015/10/DSC_0447.jpg" /> ↓ 新:<img src="//www.k4750.net/wp-content/uploads/2015/10/DSC_0447.jpg" />
というように「http:」部分を削除し、SSL/非SSLのどちらでも対応可能とした。また、amazonの商品画像は
旧:http://ecx.images-amazon.com/images/I/71J%2B8rWs3uL.jpg ↓ 新:https://images-na.ssl-images-amazon.com/images/I/71J%2B8rWs3uL.jpg
というように画像を提供しているホスト名部分を含めて変更した(これが正しいやり方かどうかは・・・不明)。