以前は有料のSSLを試したが、今回は無料のLet's Encryptを試してみる
thoames.hatenadiary.jp
前提
・ドメインは取得済み
・ドメインのDNSとサーバIPが既に設定済
・CNAMEにwwwを設定済み
まずはcertbotのインストール
$ sudo apt install certbot
Let's Encrypt側がドメインの所有者であるか(?)を確認するために、ACMEチャレンジを行いそれに問題なければ証明書が発行されるという仕組みみたい。
以下のようにNginxの設定を行い、ACMEチャレンジ用のディレクトリを作り、コマンドを叩く。
server { listen 80; server_name test.dev; location /.well-known/acme-challenge { root /usr/share/nginx/html; index index.html index.htm; } }
$ sudo service nginx restart $ mkdir -m 755 -p /usr/share/nginx/html/.well-known/acme-challenge $ certbot certonly --webroot -w /usr/share/nginx/html -d test.dev -d www.test.dev -m sample@test.dev --agree-tos -n
上記コマンドオプションの詳細は以下のサイトで確認
Nginx + Let's Encryptでサクッと証明書登録とhttps化 #Docker - Qiita
- dでドメインを指定し、-mでメールアドレスを指定している。
- dをwwwなしとwwwありでそれぞれ設定することで、1枚の証明書を異なるドメイン・サブドメイン名で使用することが可能。
Let’s Encrypt SSL証明書をサブドメインも合わせて取得する - hi3103の備忘録
以下コマンドでワイルドカード証明書にすることも可能。
この場合は生成後に表示されるTXTレコードをDNSに別途設定する必要がある。
$ certbot certonly --webroot -w /usr/share/nginx/html -d *.example.com -m sample@example.com --agree-tos -n
Let's Encryptの無料SSL証明書でhttps化しよう #nginx - Qiita
3ヶ月ごとに証明書更新が必要になるが、certbotが自動でやってくれるとのこと。
以下のコマンドを叩いて、certbot.timerが動いていればOKとのことだが、
$ systemctl status certbot.timer
更新後?のタイミングでNginxの再起動が必要だそう。
以下のサイトを参考に証明書更新時に自動でNginxが再起動されるようにしておく。
Let's Encryptの無料SSL証明書を自動更新しつつNginxで運用する
[その他参考]
【エンジニア向け】Let’s Encrypt + Certbotで無料SSL完全ガイド:仕組み・導入・裏側の流れまで #Let’sEncrypt - Qiita
Nginx + Let's Encryptでサクッと証明書登録とhttps化 #Docker - Qiita
作成したドメインを失効させるコマンド
参考までに。
$ sudo certbot revoke --cert-path /etc/letsencrypt/archive/test.dev/cert1.pem
証明書の有効期限を確認するコマンド
$ sudo certbot certificates