Ubuntu 16.04のnginxにLet's Encryptを導入する。
Let’s Encrypt は自動化されていてオープンな認証局(CA)です。 SSL/TLSサーバー証明書を無料で取得することができます。
ここではUbuntu 16.04のNginxで利用するために,Let’s EncryptからSSL/TLSサーバー証明書を入手した手順を公開します。
前提として,ドメイン(example.com)は登録済みで,ホスト(blog.takedato.com)のDNSレコードも設定済みとします。また,Nginxの設定は証明書の部分以外の終わっているものとします。
1. letsencryptをインストールします。
$ sudo apt-get install letsencrypt
2. Let’s Encryptからサーバー証明書を取得します。
$ sudo letsencrypt certonly --standalone -d blog.example.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for blog.example.com
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/blog.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/blog.example.com/privkey.pem
Your cert will expire on 2018-07-23. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. 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
3. Nginxの設定をします。
サーバーの設定ファイル(たとえば,sites-enabled/blog.example.com.conf)を以下のように証明書を指定するように変更します。
server {
listen 443;
server_name blog.example.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/blog.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.example.com/privkey.pem;
Nginxをリロードするとhttpsでアクセスできるようになっているはずです。
4. 更新の設定。
Let’s Encryptの証明書は90日で切れるので,定期的な更新が必要です。crontabを設定して,証明書を更新します。
$ sudo crontab -e
crontabの内容の例。月曜(1)の4時30分に証明書が更新されて,35分にnginxがリロードされる。
# m h dom mon dow command
30 4 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log
35 4 * * 1 /bin/systemctl reload nginx