Let's Encrypt の SSL 証明書を Ubunto 16.10 + Apache の環境にインストールして設定する手順を紹介します。
Let's Encrypt の SSL 証明書を Ubunto 16.10 + Apache にインストールして設定しました。
複数のサブドメンにも対応させましたが、非常に簡単にできましたので、その手順をシェアします。
今回の環境は下記の通りです。
# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.10
DISTRIB_CODENAME=yakkety
DISTRIB_DESCRIPTION="Ubuntu 16.10"
# apache2 -v
Server version: Apache/2.4.18 (Ubuntu)
Server built: 2016-07-18T18:32:02
.conf
ファイルでそれらを管理している場合は、事前に1つの .conf
ファイルに対して1つの VirsualHost になるように分けておく必要があります。現時点では Certbot クライアントが1つの設定ファイルに複数の VirtualHost の設定があるパターンに対応していないようです。証明書を作成したりインストールしたりする Certbot クライアントは、 apt-get
でサクッとインストールできます。
# apt-get update
# apt-get install python-certbot-apache
Google で色々と検索すると python-letsencrypt-apache
となっている記事も多いですが、これは python-certbot-apache
に名前が変わっていますのでご注意ください。
Certbot クライアントを使って Apache 用の SSL 証明書を作成します。証明書のセットアップは certbot
コマンドを使って簡単に実行できます。
# certbot --apache -d example.com
もし、1枚の証明書でサブドメインを含めた複数のドメインをカバーしたい場合は、下記のように -d
パラメーターを複数書きます。このとき、最初に書いた -d
パラメーターがベースドメインになるので、トップレベルドメインを最初に書いた方がいいようです。
# certbot --apache -d example.com -d www.example.com
コマンドを実行すると、プロンプトが表示されます。
何かあったときに通知してもらうためのメールアドレスを入力して OK
します。
この他にキャプチャを撮り忘れてしまいましたが、http と https の両方のアクセスを許可するか、または強制的に https にリダイレクトするかも聞かれます。特に http を残しておく特別な事情がなければ https にリダイレクトさせた方がいいでしょう。
また、次に利用規約に同意するかも聞かれますので、同意する場合は Agree
を選びましょう。
プロンプトが終了し、下記のように表示されれば成功です。
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your cert will
expire on 2017-06-07. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again with the
"certonly" option. To non-interactively renew *all* of your
certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Let's Encrypt の証明書は有効期間が 90 日間だそうです。有効期間が切れる 30 日前になると、 certbot renew
コマンドで更新できます。更新可能期間になる前にこのコマンドを実行しても、「まだ更新期間ではないよ」と言われるだけです。
そこで、 cron
で毎週 certbot renew
コマンドが走るように設定します。
# crontab -e
下記の内容を追記して保存します。これで毎週月曜日の 2:30 に証明書の更新チェックが走ります。コマンドの実行結果は /var/log/le-renew.log
に記録されます。
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
ブラウザで設定した URL に https://
でアクセスしてみましょう。アドレスバーの左端が緑色になり、安全であることを示しているはずです。
また、証明書は、下記の URL にアクセスして確認することができます。
https://www.ssllabs.com/ssltest/analyze.html?d= example.com
&latest
以上です。