Let's Encrypt SSL/TLS 인증서 적용하기
3개월짜리 무료 SSL 인증서를 발급해 주는 프로젝트인 letsencrypt 에서 SSL/TKS Certificate 발급해서 웹 서버에 적용하기
사전 준비 사항
git 1.8 과 python 2.7 이상 설치
RedHat Enterprise Linux(RHEL)와 CentOS 6, Amazon Linux 1 은 python 2.6 이 설치되어 있고 시스템의 핵심 구성요소라 변경이 어려우니 ISU 저장소 설치 필요
저장소 다운로드 및 설치
CentOS 6rpm -ivh https://centos6.iuscommunity.org/ius-release.rpm
의존 패키지 설치
yum install git python27 python27-devel python27-pip python27-setuptools python27-virtualenv python27-libs
SSL 발급 & 웹 서버 적용
저장소 복제
git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt
인증서 발급
./letsencrypt-auto certonly --webroot --email your@email --agree-tos \ -w /your/web/root/directory1 -d your.domain1 \ -w /your/web/root/directory2 -d your.domain2 \ -w /your/web/root/directory3 -d your.domain3
기본 옵션
(default) run Obtain & install a certificate in your current webserver
certonly Obtain or renew a certificate, but do not install it
renew Renew all previously obtained certificates that are near
--webroot Place files in a server's webroot folder for authentication
- --agree-tos Agree to the ACME server's Subscriber Agreement
--dry-run Test "renew" or "certonly" without saving any certificates to disk
nginx 플러그인 사용해서 갱신
./letsencrypt-auto --nginx renew
cron 연동
3개월 만료이므로 자동으로 갱신하도록 cron 에 등록
문제 해결
UnicodeDecodeError
다음과 같은 에러가 발생할 경우 "UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 330: ordinal not in range(128)"
nginx 설정 파일에 한글 주석등이 있어서 입니다.
ascii 가 아닌 문자가 있는 파일을 찾은 후에 한글등을 제거합니다.(https://github.com/certbot/certbot/issues/5236)
$ grep -r -P '[^\x00-\x7f]' /etc/apache2 /etc/letsencrypt /etc/nginx