Let's Encrpytを使ってnginxでSSL通信

SSL通信用の証明書も無料で使える時代ですか。
すごいことになってますねえ
Let's Encrpytは3ヶ月で切れる証明書ですが、自動更新用のプログラムも用意されててびっくりしました。

Centos7+Nginxの場合

Let's Encrpytの証明書を発行してくれるcertbotを導入し、
証明書を発行、
発行した証明書をnginxに導入
certbotで自動更新させる流れとなります。

・certbotの導入
epel-releaseがRPMに導入されてなければ下記のように追加。
その後、同様にcertbotを導入します。
sudo yum install sudo yum install epel-release
sudo yum install certbot python2-certbot-nginx

・証明書の発行
exampleteest.comの場合
certbot certonly --manual -d exampleteest.com --preferred-challenges dns
すると下記のような文言でDNSに修正をいれろとくる。

最後にEnter押せとくるけど、DNSの設定終わってからじゃないと意味がない(Enterでチェックが入るから)
Please deploy a DNS TXT record under the name
_acme-challenge.exampleteest.com with the following value:
12345677899

これはexampleteest.comのDNS情報にTXTフィールドにデータいれろということ。
_acme-challenge.exampleteest.com のTXTに12345677899を設定
Xserverのドメイン設定ならDNSレコード追加で設定できる。
設定後はnslookupでチェックしてからEnter
 nslookup -q=txt _acme-challenge.exampleteest.com

・nginxに導入
/etc/nginx/conf.d/default.conf あたりに下記を記載
ssl_certificate /etc/letsencrypt/live/ドメイン名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ドメイン名/privkey.pem;
※live以下はシンボリックリンクになっており、自動更新時にファイルが書き換えられてもいじらなくて済むようになっている


・証明書の自動更新
cron使う方法もあるけど、systemdのタイマー機能使ったほうがよさげ。
systemctl start certbot-renew.timer
systemctl enable certbot-renew.timer
systemctl list-timers --all

systemctl status certbot-renew.timer で状態確認できる