Let's Encryptとは
日本語ではレッツ・エンクリプトと読みます。無料ですぐに利用可能なSSLサーバー証明書で、アメリカの非営利団体ISRG (Internet Security Research Group) が、2016年から提供しているサービスです。
それまでSSLといえば個人情報を入力するフォームなどには必要な手段にもかかわらず、高く(数万円~数十万円)、手続きが面倒でした。ところがLet’s Encrypt誕生のおかげで誰でも、いつでも、かなり簡単にSSLが利用できるようになります。画期的なサービスの登場です。
この記事ではわかりやすくするために、単に「SSL」と表記していますが、実際は少し複雑です。より詳しくお知りになりたい方は、下記の記事をご覧ください。
環境
Apache/2.4.33
aws-cli/1.14.8 Python/2.7.14 Linux/4.14.42-61.37.amzn2.x86_64 botocore/1.8.12
crontabを使用した自動化
# vim /etc/cron.d/letsencrypt
00 16 * * 2 root /usr/bin/certbot-auto renew --post-hook "service httpd restart"
※この書き方だと毎週火曜日の16:00に実行されるようになっています。
詳しいことはLet's Encryptの方を参照してください。
これで上手くいけばなんも心配はないのですが。
ここからはLet's Encryptを自動化しようとした時に見るべき項目を書いていこうと思います
トラブルシューティング
(1)cronがそもそも動いているのか
# /etc/rc.d/init.d/crond status
crond (pid xxxx) を実行中...
(2)runlevelに合わせてonになっているか
(2~5がonになっていればok)
# chkconfig --list crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
(3)Pathがしっかりしているか。(自分はこれが原因でした。)
# echo $PATH
/opt/rh/python27/root/usr/bin:/usr/local/rbenv/shims:/usr/local/rbenv/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PATH=/opt/rh/python27/root/usr/bin:/usr/local/rbenv/shims:/usr/local/rbenv/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
00 16 * * 2 root /usr/bin/certbot-auto renew --post-hook "service httpd restart"
※Pathは自分の環境に合わせて変更の方してください。
(4)それでもダメならlogで確認してみてください。
# touch /tmp/analog.log && touch /tmp/analog-err.log
00 16 * * 2 root /usr/bin/certbot-auto renew --post-hook "service httpd restart" >>/tmp/analog.log 2>>/tmp/analog-err.log
これで作成した。analog.logとanalog-err.logを確認してみましょう。
## まとめ
いかがだったでしょうか?
自分が主に思いつく解決方法や起こりうるトラブルを書きました。
何か質問や気になる事があればTwitterなどでも良いので声をかけてくれれば、出来る範囲で対応します。
@uechan9220