AWS EC2(Amazon Linux+Nginx)の環境でLet’s EncryptのSSL/TLS証明書を更新しようとすると以下のエラーが出るようになってしまいました。。
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
from certbot.main import main
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/certbot/main.py", line 10, in
import josepy as jose
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/josepy/__init__.py", line 44, in
from josepy.interfaces import JSONDeSerializable
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/josepy/interfaces.py", line 8, in
from josepy import errors, util
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/josepy/util.py", line 4, in
import OpenSSL
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in
from OpenSSL import rand, crypto, SSL
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/OpenSSL/rand.py", line 12, in
from OpenSSL._util import (
File "/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/OpenSSL/_util.py", line 6, in
from cryptography.hazmat.bindings.openssl.binding import Binding
ImportError: No module named cryptography.hazmat.bindings.openssl.binding
赤字部分を見るとどうもLet’s Encryptモジュールのバージョンが古いからエラーになっているのかと思われ、赤太字”/opt/eff.org/certbot/venv/bin”直下にあるpipを使って以下のようにLet’s Encryptのモジュールを更新しました。
unset PYTHON_INSTALL_LAYOUT # 環境変数を削除 /opt/eff.org/certbot/venv/bin/pip install --upgrade certbot # Let's Encryptモジュールを更新
後は「Nginx停止 → SSL/TLS証明書を更新 → Nginx起動」でうまくいきました。
service nginx stop # Nginx停止 ./certbot-auto renew # SSL/TLS証明書更新 service nginx start # Nginx起動