2 flat logo on transparent 256
2018-03-21

Let's Encryptを更新しようとしたら発生するエラーと対応方法を解説します。

Sec02121

当サイトでは無料のSSL証明書であるLet's Encryptを利用しています。

Let's Encryptは3ヶ月に1回更新する必要があり、今回手動で更新した際に発生したエラーと対処法を記載します。

なお新規でLet's Encryptを設定する場合はAmazon Linux 、Nginx、CertbotでLet’s Encryptを利用し、無料でSSL対応するをご参照下さい

実行環境

AWS EC2 (Linux)

Nginx

pythonの環境変数エラー

エラー内容

 sudo ./certbot-auto renew

Error: couldn't get currently installed version for /opt/eff.org/certbot/venv/bin/letsencrypt:
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

環境変数エラーの解決方法

環境変数のPYTHONINSTALLLAYOUTを削除する

$unset PYTHON_INSTALL_LAYOUT
$sudo /opt/eff.org/certbot/venv/local/bin/pip install --upgrade certbot

Nginxを起動している状態で、Let's Encryptを更新しようとして発生するエラー

Let's Encryptを更新する際は、ミドルウエア(今回はNginx)を停止する必要があります。以下エラーはNginxを起動中に証明書を更新しようとした際に発生するエラーになります。

Attempting to renew cert (ドメイン名.jp) from /etc/letsencrypt/renewal/ドメイン名.jp.conf produced an unexpected error: Problem binding to port 443: Could not bind to IPv4 or IPv6.. Skipping.
All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/ドメイン名.pem (failure)

Nginxを起動している状態で、Let's Encryptを更新しようとして発生するエラーの解決方法

アプリケーションを設定しているディレクトリまで移動し、 Nginxを停止させ、更新コマンドを実行させます。

$ nginx -s stop
$ ~/certbot-auto renew

-------------------------------------------------------------------------------

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/サイトドメイン.jp/fullchain.pem (success)
-------------------------------------------------------------------------------

$ sudo service nginx start

以上 後日Let’s Encryptを自動更新する方法も記事化してリリースする予定です

前の記事
次の記事