CentOS 6.x 와 APM 서버 환경에서 진행.
1. 설치 ( ISU 레포지트리 배포처 https://ius.io/GettingStarted )
cd /usr/local yum install epel-release rpm -ivh https://rhel6.iuscommunity.org/ius-release.rpm yum install git python27 python27-devel python27-pip python27-setuptools python27-virtualenv python27-libs git clone https://github.com/letsencrypt/letsencrypt
설치는 그냥 필수 라이브러리를 설치하고 git을 통해 실행 스크립트를 가져오는 수준이다.
2. 실행(일반 사용법)
/usr/local/letsencrypt/letsencrypt-auto certonly cd /usr/local/letsencrypt
3. 단축 명령어(인증서 발급)
cd /usr/local/letsencrypt cd /usr/local/letsencrypt /letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory \ --rsa-key-size 4096 --agree-tos --email sample@gmail.com \ --webroot -w /home/www.sample.com/public_html/ \ -d www.sample.com
--email --webroot -d : 이메일, 경로, 도메인 수정
4. 아파치 설정.
SSLProtocol ALL -SSLv2 -SSLv3 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK SSLHonorCipherOrder on Listen 443 <VirtualHost *:443> DocumentRoot /free/home/enteroa/html ServerName wp.enteroa.kr SSLEngine on SSLCertificateFile /etc/letsencrypt/live/wp.enteroa.kr/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/wp.enteroa.kr/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/wp.enteroa.kr/chain.pem SSLCACertificateFile /etc/letsencrypt/live/wp.enteroa.kr/fullchain.pem Header always set Strict-Transport-Security "max-age=15552000" </VirtualHost>
5. 갱신
letsencrypt_renew.sh
#!/bin/bash
# 실행 조건 1일 1회 작동
## pid 생성 중복실행을 방지 #######################################################
if [[ -s $0.pid ]];then exist_pid=`cat $0.pid`
if [[ -z `ps -e|grep $exist_pid` ]];then rm -f $0.pid;exec_confirm="Y"
else exec_confirm="N";echo -e "\e[1;32mShell has already running...\e[0m";fi
else exec_confirm="Y";fi
if [[ $exec_confirm == "Y" ]];then
echo $$ > $0.pid
###################################################################################
cd /usr/local/letsencrypt
chattr -i /usr/bin/gcc /usr/bin/g++
/usr/local/letsencrypt/letsencrypt-auto renew --rsa-key-size 4096
chmod 700 /usr/bin/gcc /usr/bin/g++;chattr +i /usr/bin/gcc /usr/bin/g++
find /tmp -maxdepth 1 -type d -perm 700 -user root -name 'tmp.*' -exec rm -rf {} \;
###################################################################################
rm -f $0.pid
fi
###################################################################################
6. 이용 제한( rate limit )
아무래도 무료SSL의 무분별한 사용을 막기 위한 설정이라고 보면 되겠다.
- 1개의 IP 에서 3시간동안 10개의 도메인을 허용
- 7일 동안 1개의 도메인에서 5개의 도메인레코드 선언을 허용
이 rate limit 는 발급받은 SSL 을 revoke(취소) 하거나 /etc/letsencrypt/ 에 생성된 항목을 삭제하더라도 반환되지 않습니다.
7. 인증서에 도메인 추가
cd /usr/local/letsencrypt ./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory \ --rsa-key-size 4096 -agree-dev-preview --agree-tos \ --webroot -w /free/home/enteroa/html/ --email enteroa.j@gmail.com \ -d wp.enteroa.kr -d enteroa.kr -d www.enteroa.kr
위 명령어로 진행시 기존 인증서에 도메인을 추가(EXPAND)할껀지 물어보는데 enter를 눌러서 진행하면 된다.