Linux初心者~Let’s Encryptで証明書更新~

2018年6月14日システムEC2, Let's Encript, Linux

はじめに

SSL証明書をLet’s Encriptで作っていたので、3か月が経過して有効期限が近くなっていた。
なので、更新しようと思ったら色々躓いたのでメモした。

証明書の作成は、以前の記事で書いたので、今回は割愛しますー。

Linux初心者〜AWSにWebサーバを構築〜

証明書の更新

  • 一度テスト実行してみる
$ cd ~/tools/letsencrypt
$ sudo ./certbot-auto renew --dry-run --debug

dry-run
テスト用の SSL/TLS サーバ証明書(信頼されていない無効な証明書)の取得だけして、保存はしない。

  • うまくいったら、実際に動かす(EC2だと動作保証されていないらしく、–debugは必要らしい)
$ sudo ./certbot-auto renew --debug

更新時にpythonモジュールのエラーが出た時

  • 出力されたエラー内容
Requesting to rerun ./certbot-auto with root privileges...
Upgrading certbot-auto 0.21.0 to 0.22.2...
Replacing certbot-auto...
Creating virtual environment...
Installing Python packages...
Installation succeeded.
Traceback (most recent call last):
  File "/opt/eff.org/certbot/venv/bin/letsencrypt", line 7, in <module>
    from certbot.main import main
  File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/certbot/main.py", line 10, in <module>
    import josepy as jose
  File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/josepy/__init__.py", line 41, in <module>
    from josepy.interfaces import JSONDeSerializable
  File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/josepy/interfaces.py", line 8, in <module>
    from josepy import errors, util
  File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/josepy/util.py", line 4, in <module>
    import OpenSSL
  File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL
  File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/OpenSSL/rand.py", line 12, in <module>
    from OpenSSL._util import (
  File "/opt/eff.org/certbot/venv/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

色々対応したことがネットで出てくるけど、自分は以下のことをやって解消しました。

  • /opt/eff.org/certbot/venv/bin/letsencryptを削除(/tmpに退避した)
$ sudo mv /opt/eff.org/certbot/venv/bin/letsencrypt /tmp
  • sudoで実行する
$ sudo ./certbot-auto renew --dry-run --debug

追記

以下で更新後に、Webサーバを再起動できた。

$ cd ~/tools/letsencrypt
$ sudo ./certbot-auto renew --post-hook "sudo /etc/rc.d/init.d/nginx restart"

–post-hook
証明書を取得・更新する試みが終わった後にシェルで実行するコマンドを指定できる。

システムEC2, Let's Encript, Linux

Posted by UT