메뉴 닫기

let’s Encrypt SSL 무료 인증서 certbot을 통해 설치 및 설정법

요즘 사람들 사이에서 인기가 많은 무료 SSL 인증서인 let’s Encrypt를 설치 후 설정해보았습니다.
운영하고 있는 홈페이지가 크롬에서 안전하지 않음으로 뜨는게 마음에 걸렸었는데 마침 잘 됐었다고 
생각합니다. 다 좋지만 단점이 있다면 90일에 한번씩 인증서 갱신이 필요 한점이 있을것같네요.
이 부분은 crontab을 통하여 자동으로 갱신을 할수 있으므로 크게 걱정하지 않아도 될것같습니다.

서버 구성

OS 버전 : CentOS release 6.8 64bit

apache 버전 : yum install을 기반으로한 2.2.15

참고 1 : 이 글에서는 certbot을 이용하여 let’s Encrypt를 셋팅합니다. 또한 CentOS 및 apache 기반으로 셋팅을 진행하기 때문에
             사용하시는서버가 ubuntu 및 nginx로 셋팅이 되어있다면 이 홈페이지에 접속하여 설치법을 확인해보시는것을 권장합니다.
             https://certbot.eff.org/

참고 2 :이 글에서는 httpd.conf를 수정합니다. 수정하기전의 파일은 백업을 해두도록 합시다.   

1.png

보통 let’s Encrypt를 설치시에는 github를 이용하여 설치 및 설정을 진행하지만 이 글에서는 
certbot-auto을 이용하여 let’s Encrypt의 설치 및 설정을 진행합니다.

# certbot-auto를 다운받기전에 certbot 디렉토리를 만듭니다.
   (강제적은 아니나 되도록이면 만들어주는게 좋다고 생각합니다.)
mkdir /usr/local/src/certbot

# 생성한 certbot로 이동합니다.
cd /usr/local/src/certbot

# certbot-auto를 wget으로 다운받습니다.
wget https://dl.eff.org/certbot-auto

# 다운받은 certbot-auto의 권한을 755로 맞춰줍니다.
chmod a + x certbot-auto

2.png

3.png

4.png

5.png

certbot-auto를 실행하면 let’s Encrypt에 필요한 도구가 설치됩니다.

# certbot-auto 실행
./certbot-auto

6.png

도구들의 설치가 완료되면 여기서 부터 let’s Encrypt의 설치 및 설정이 진행됩니다.
진행 내역의 경우 위의 그림과 아래의 내용을 참고하시면 될것같습니다.

맨 처음에 나오는 파이썬의 경고 메세지의 경우 차후 버전에서는 Python 2.6를 지원하지 않으니 
업그레이드를 하라는 내용이며 아직까지는 설치 및 설정하는데에는 큰 영향을 주지는 않습니다.
추후에 걱정된다면 파이썬의 버전을 추후 2.7 버전 또는 3버전으로 재설치를 진행하시면 됩니다.

번역

Python 2.6을 더 이상 지원하지 않으므로 Python을 업그레이드하십시오. 암호화의 차후 버전은 Python 2.6에 대한 지원을 중단합니다.
지원 중단 경고 및 디버그 로그 저장
이메일 주소를 입력하십시오 (긴급 갱신 및 보안 통지에 사용됨). ( ‘c’를 입력하십시오.
취소): 이메일 주소를 입력

——————————————————————————-

서비스 약관을에서 읽으십시오.
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. 동의해야합니다.
에서 ACME 서버에 등록하려면
https://acme-v01.api.letsencrypt.org/directory

——————————————————————————-

(A)동의 / (C)취소 : A

약관에 동의하고 다음으로 넘어갑니다.

——————————————————————————-

전자 프런티어와 이메일 주소를 공유 하시겠습니까?
재단, Let ‘s Encrypt 프로젝트의 창립 파트너이자 비영리 단체
Certbot을 개발하는 조직? EFF에 관한 이메일을 보내고 싶습니다.
웹을 암호화하고 사용자를 보호하며 디지털 권한을 보호하기위한 노력
——————————————————————————-
(Y) es / (N) o : N
 
여기에서는 이메일을 받으시려면 Y를 그게 아니라면 저처럼 N를 선택합니다.
어떤 이름으로 HTTPS를 활성화 하시겠습니까?
——————————————————————————-
1 : imitator.kr
——————————————————————————-
쉼표 및 / 또는 공백으로 구분 된 적절한 번호를 선택하거나 입력을 남겨 둡니다.
표시된 모든 옵션을 선택하려면 비워 두십시오 (취소하려면 ‘c’입력). 1
 
httpd.conf에 도메인이 설정되어있다면 HTTPS 활성화하는 부분에서 도메인이 나옵니다.
활성화할 도메인의 번호를 선택하고 엔터를 누릅니다.
 
8.png
 
설정을 마치면 ssl 인증키가 생성됩니다. 번역문에서 조금 이해가 안갈수도 있습니다만 
저의 경우 정상적으로 인증키가 생성되었으며 실제로 적용도 가능했습니다.
 
번역
새 인증서 얻기
다음 과제 수행 :
imitsator.kr의 tls-sni-01 챌린지
확인을 기다리는 중 …
도전 과제 정리
키 생성 (2048 비트) : /etc/letsencrypt/keys/0000_key-certbot.pem
CSR 작성 : /etc/letsencrypt/csr/0000_csr-certbot.pem
오류 : /etc/httpd/conf/httpd.conf에 하나의 가상 호스트 만 있어야합니다.
현재 우리는 하나의 파일에 하나의 가상 호스트가있는 구성 만 지원합니다.
 
중요한 메모 :
 – 인증서를 설치할 수 없습니다.
 축하해! 인증서와 체인이에 저장되었습니다.
   /etc/letsencrypt/live/imitator.kr/fullchain.pem. 인증서가
   2017-07-06에 만료됩니다. 이 새로운 버전이나 수정 된 버전을 얻으려면
   인증서를 사용하여 certbot-auto를
   “세튼”옵션. 비 대화식으로 * 모든 *을 갱신하려면
   인증서를 실행하면 “certbot-auto renew”
 – 계정 자격 증명이 Certbot에 저장되었습니다.
   / etc / letsencrypt의 구성 디렉토리. 당신은
   지금이 폴더의 안전한 백업. 이 구성 디렉토리는
   Certbot에서 얻은 인증서 및 개인 키도 포함합니다.
   이 폴더를 정기적으로 백업하는 것이 이상적입니다.
 
9.png
 
ssl 을 정상적으로 이용하기 위해 httpd.conf 에서 셋팅을 진행합니다.
 
# yum으로 설치한 apache의 설정파일을 실행
vi /etc/httpd/conf/httpd.conf
 
# ssl 설정
 
NameVirtualHost *:443
 
<VirtualHost *:443>
    DocumentRoot 웹 루트 경로
    ServerName 도메인:443
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/도메인/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/도메인/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/도메인/fullchain.pem
</VirtualHost>
 
 
10.png
11.png
 
설정이 모두 완료되었다면 저장한후 apache를 재시작한뒤 443포트가 정상적으로 올라와있는지 확인해봅니다.
 
# apache 정지
/etc/init.d/httpd stop
 
# apache 시작
/etc/init.d/httpd start
 
# 443포트 오픈 확인
netstat -nlp
 
12.png
 
셋팅이 완료되었다면 certbot-auto를 다운받은 폴더로 돌아가서 갱신 테스트를 진행한후
정상적으로 잘 된다면 certbot-auto 파일을 bin으로 보낸후 crontab에 등록하여 
자동적으로 갱신을 진행할수 있도록 합니다.
 
# certbot 폴더로 이동
cd /usr/local/src/certbot
 
# let’s Encrypt 갱신 테스트 진행(실제로 갱신되지는 않습니다)
./certbot-auto renew –dry-run
 
번역
Python 2.6을 더 이상 지원하지 않으므로 Python을 업그레이드하십시오. 암호화의 차후 버전은 Python 2.6에 대한 지원을 중단합니다.
지원 중단 경고 및 디버그 로그 저장
 
——————————————————————————-
/etc/letsencrypt/renewal/imitator.kr.conf 처리 중
——————————————————————————-
갱신 만기가 아닌 Cert이지만 드라이 런에 대한 시뮬레이션 갱신
기존 인증서 갱신
다음 과제 수행 :
imitsator.kr의 tls-sni-01 챌린지
vhost 모호성이 발생했지만 비 대화식 모드에서 사용자 지침을 요청할 수 없습니다. 현재 Certbot은 각 가상 호스트가 자신의 conf 파일에 있어야하며 
가상 호스트에 ServerName 또는 ServerAlias ​​디렉토리로 명시적으로 레이블을 지정해야 할 수도 있습니다.
기본 vhost * : 443으로 다시 떨어지는 중 …
확인을 기다리는 중 …
도전 과제 정리
파일에 저장하지 않고 키 (2048 비트) 생성 중
CSR 생성 : 파일에 저장 안함
 
——————————————————————————-
새로운 인증서가 아파치 서버의 리로드와 함께 배포됩니다. 풀 체인은
/etc/letsencrypt/live/imitator.kr/fullchain.pem
——————————————————————————-
** DRY RUN : 인증서 만료에 가까운 ‘certbot 갱신’시뮬레이트
** (아래 테스트 인증서는 저장되지 않았습니다.)
 
축하합니다. 모든 갱신이 완료되었습니다. 다음 인증서가 갱신되었습니다.
  /etc/letsencrypt/live/imitator.kr/fullchain.pem (성공)
** DRY RUN : 인증서 만료에 가까운 ‘certbot 갱신’시뮬레이트
** (위 테스트 인증서는 저장되지 않았습니다.)
 
# certbot-auto 파일 이동 
mv /usr/local/src/certbot/certbot-auto /bin
 
# crontab에 certbot-auto를 추가하여 let’s Encrypt SSL 무료 인증서 자동 갱신(갱신이 정상적으로 되는지 확인해봐야합니다.)
  매월 30일 새벽 3시 30분에 certbot-auto 스크립트 작동후 작동 내용은 ssl-renew.log에 저장
vi /etc/crontab
30 3 30 * * root /bin/certbot-auto renew >> /var/log/ssl-renew.log
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x