(関連記事: Let’s Encryptをnginxで使ってみる)
SSLの更新時期を思い出した
ウソです忘れてました。忘れてたところ、こんなメールが先週届いていました。
これはありがたい・・・本当にエラーになってから思い出すところでした。
本体のアップデート
3ヶ月ぶりなので、まずはLet’s Encrypt本体をアップデートしておきます。
|
1 2 3 |
$ sudo su - # cd ~/letsencrypt/ # git pull |
証明書の更新を実行
依存ライブラリなどが更新されているかもしれないので、先にそれらをチェックします。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# ./letsencrypt-auto renew Checking for new version... Creating virtual environment... Installing Python packages... Installation succeeded. Requesting root privileges to run letsencrypt... /root/.local/share/letsencrypt/bin/letsencrypt --help Traceback (most recent call last): File "/root/.local/share/letsencrypt/bin/letsencrypt", line 7, in <module> from letsencrypt.cli import main File "/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/letsencrypt/cli.py", line 21, in <module> import OpenSSL File "/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module> from OpenSSL import rand, crypto, SSL File "/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/OpenSSL/rand.py", line 11, in <module> from OpenSSL._util import ( File "/root/.local/share/letsencrypt/local/lib/python2.7/dist-packages/OpenSSL/_util.py", line 6, in <module> from cryptography.hazmat.bindings.openssl.binding import Binding ImportError: No module named cryptography.hazmat.bindings.openssl.binding |
ダメでした。
エラー解決に試してみたこと
ネットの情報を頼りに次のことを試してみましたが変わらずエラーが出続けます。
|
1 2 3 |
# pip install --upgrade pip # pip install cryptography --upgrade # pip install pyopenssl |
更に調べていたところ、どうやらAmazon EC2上でのみ起きている様子…。
いざ更新
Let’s Encryptのgithub issueに同じエラーの報告があり、一般ユーザーからsudoすればOKというコメントを元に試してみることに。
https://github.com/letsencrypt/letsencrypt/issues/2544
|
1 2 3 4 5 6 7 8 9 |
$ sudo /root/letsencrypt/letsencrypt-auto renew Checking for new version... Requesting root privileges to run letsencrypt... /root/.local/share/letsencrypt/bin/letsencrypt renew Processing /etc/letsencrypt/renewal/saku.io.conf new certificate deployed without reload, fullchain is /etc/letsencrypt/live/saku.io/fullchain.pem Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/saku.io/fullchain.pem (success) |
おー!うまくいきました!
最後にWebサーバーの再起動で完了です。
|
1 2 3 |
$ sudo service nginx restart Stopping nginx: [ OK ] Starting nginx: [ OK ] |
確認する
ブラウザで開いて、アドレスバーの鍵マークから証明書を確認してみます。
ちゃんと90日後になっていますね!
少しハマったこともありますが、終わってみれば本当に簡単なステップで完了できました。
自動更新の設定
cronで一定周期で renew コマンドを実行して、ウェブサーバーを再起動すれば良いようです。
次のcronは毎月1日の深夜3時に更新するようにしています。
|
1 |
0 3 1 * * /root/letsencrypt/letsencrypt-auto renew --force-renew && service nginx restart |
ただし、rootで実行するとエラーになる問題があるので今回は設定を見送りました。
ご自身の環境でエラーにならない場合は問題なく運用できると思います。
所感
3ヶ月前は自動更新ができなかった記憶があるのですが、既に実装されていてとても簡単に更新できました。
今後管理するドメインが増えたときのために、自動更新は稼働させておきたいところです。




