Amazon Linux AMI 에서 letencrypt certbot 으로 SSL 인증서 발급 에러
ImportError: No module named cryptography.hazmat.bindings.openssl.binding
증상
아마존 리눅스에서 certbot 실행시 "ImportError: No module named cryptography.hazmat.bindings.openssl.binding" 에러가 발생하며 발급 중지
$ cat /etc/system-release Amazon Linux AMI release 2017.09
$ ./certbot certonly --debug 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/lib64/python2.7/site-packages/ 에 sitecustomize.py 를 만들고 다음 내용 추가
$ echo -e "import site\nsite.addsitedir('/opt/eff.org/certbot/venv/lib64/python2.7/dist-packages')" > /opt/eff.org/certbot/venv/lib64/python2.7/site-packages/sitecustomize.py
certbot 재실행
$ ./certbot-auto certonly --debug
Ref
UnicodeDecodeError: 'ascii' codec can't decode byte
증상
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 330: ordinal not in range(128)
조치
설정 파일에 Non-Ascii 문자가 포함되어서 발생하며 GNU iconv 를 사용하여 설정 파일을 ASCII 로 강제 변환해서 처리
설정 파일에 한글 주석이 있는 경우에도 발생하므로 한글 주석을 삭제하거나 영어로 작성한다..
for i in sites-enabled/*.com; do echo $i; iconv -f UTF-8 -t US-ASCII//TRANSLIT -o $i.txt $i;done