Mozila 재단에서 진행하는 무료SSL(90일) 인증서 발급 프로젝트 이다. ( https://letsencrypt.org )
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를 눌러서 진행하면 된다.
2016/12/07 16:07 2016/12/07 16:07

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다