Edited at

Lets Encryptで証明書更新時にcryptographyのエラーが出た時の対処法

More than 1 year has passed since last update.

まれにLets Encryptで証明書更新時にエラーが発生します。

大体、pipのモジュールを最新化すると治っているイメージがありますが、、一応メモとして残しておきます。


環境

EC2 - Amazon Linux


試した方がいいことまとめ


  • certbot-autoを最新化

  • pipのモジュール最新化


  • /opt/eff.org/certbot/を削除


エラーの内容と対処方法


Error: couldn't get currently installed version for /opt/eff.org/certbot/venv/bin/letsencrypt:

/opt/eff.org/certbot/が現在利用しているcertbot-autoのバージョンと異なるそうです。

certbot-auto実行時にこちらのディレクトリが再生成されるようなので削除して再実行します。

$ sudo rm -r /opt/eff.org/certbot/

$ ./certbot-auto --debug -v


ImportError: No module named cryptography.hazmat.bindings.openssl.binding

cryptographyが見つからないそうです。

./certbot-auto --debug -v

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

pip、virtualenv、cryptographyのバージョンを最新化すると効果がありました。

$ sudo pip install -U pip virtualenv cryptography

このコマンドで諸々更新されたあとはシェルを起動しなさないと、pipが実行できないのでご注意ください。

また、/opt/eff.org/certbot/も作りなおさないとエラーが消えませんでした。

$ bash

$ sudo rm -r /opt/eff.org/certbot/


参考

https://github.com/certbot/certbot/issues/2823

https://github.com/certbot/certbot/issues/2544

https://github.com/scrapy/scrapy/issues/1314