일단 설치 법은 크게 다르지는 않지만 몇가지 막히는 부분이 있다.
1 2 3 |
~]# yum install epel-release ~]# rpm -ivh https://rhel5.iuscommunity.org/ius-release.rpm ~]# yum install git python27 python27-devel python27-pip python27-setuptools python27-virtualenv python27-libs |
이 다음 git을 통해 letsencrypt를 가져오는 명령어가 그냥 실행하면 되지 않는다.
아마도 git 에서 제공되는 SSL에서 지원하는 suite 가 centos 에 없거나 신뢰할수 있는 CA로 등록되어 있지 않는듯 하다. 때문에 GIT_SSL_NO_VERIFY=true를 하고 진행한다.
1 2 3 |
~]# cd /usr/local ~]# export GIT_SSL_NO_VERIFY=true ~]# git clone https://github.com/certbot/certbot |
일단 설치는 잘 완료되 되었다.
이후 발급 시도시 SSL_set_tlsext_host_name 관련 에러가 날것이다.~]# cd /usr/local/letsencrypt
1 2 3 4 5 6 7 8 |
~]# ./letsencrypt-auto certonly --server https://acme-v02.api.letsencrypt.org/directory \ --rsa-key-size 4096 --agree-tos --email enteroa.j@gmail.com \ --webroot -w /웹루트/html -d 도메인.kr -d www.도메인.kr .... .... .... .... AttributeError: 'module' object has no attribute 'SSL_set_tlsext_host_name' |
사유는 openssl 버전이 너무 낮기 때문에 발생하는것으로 판단된다.
때문에 별도의 수정이 좀 필요하다.
에러 해결은 github 의 antmd님의 댓글에서 발췌 했습니다. ‘ㅅ’a
1 2 3 4 |
~]# cd ~/.local/share/letsencrypt ~]# . bin/activate ~]# pip uninstall pyopenssl ~]# pip install pyopenssl==0.12 |
를 한뒤에 아래 두파일의 의 1239번째줄과 296번째줄을 주석처리한다 ( # 으로.. )
~/.local/share/letsencrypt/lib/python2.7/site-packages/OpenSSL/SSL.py ( 1239줄 )
1 2 3 4 5 6 7 |
raise TypeError("name must not contain NUL byte") # XXX I guess this can fail sometimes? # _lib.SSL_set_tlsext_host_name(self._ssl, name) def pending(self): """ |
~/.local/share/letsencrypt/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py ( 296줄 )
1 2 3 4 5 6 |
ctx.set_cipher_list(DEFAULT_SSL_CIPHER_LIST) cnx = OpenSSL.SSL.Connection(ctx, sock) # cnx.set_tlsext_host_name(server_hostname) cnx.set_connect_state() while True: |
그다음 다시 발급 시도를 하면 정상 발급이 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
~]# cd /usr/local/letsencrypt ~]# ./letsencrypt-auto certonly --server https://acme-v02.api.letsencrypt.org/directory \ --rsa-key-size 4096 --agree-tos --email enteroa.j@gmail.com \ --webroot -w /웹루트/html -d 도메인.kr -d www.도메인.kr ... ... ... Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/도메인.kr/fullchain.pem. Your cert will expire on 2016-07-07. To obtain a new version of the certificate in the future, simply run Let's Encrypt again. Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le |
ps. ~/.local의 파일 수정이 잘 안되는 분, 혹은 파일이 없는 경우 아래와 같이 수정된 소스를 다운받아 실행합니다.
1 2 3 4 5 6 7 8 |
~]# cd /root ~]# wget http://enteroa.com/extra_files/enteroa_letsencrypt_ceontos5.tgz ~]# tar xfzp enteroa_letsencrypt_ceontos5.tgz ~]# cd /usr/local/letsencrypt ~]# ./letsencrypt-auto certonly --server https://acme-v02.api.letsencrypt.org/directory \ --rsa-key-size 4096 --agree-tos --email enteroa.j@gmail.com \ --webroot -w /웹루트/html -d 도메인.kr -d www.도메인.kr |