Let’s Encrypt
무료로 SSL을 발급받아 사이트에 적용해보자 let encrypt 는 ssl 시장 점유을 0.1% 미만의 인증기관이지만
mozilla, cisco, 페이스북 등 여러 유명한 업체들이 스폰서로 참여하여 ssl을 보급하려고 한다
발급 절차가 간단하고 무료이기 때문에 사용이 편리하다
다만 인증서의 기간이 3개월밖에 안된다는 이슈가 있지만 이 이슈도 해결이 가능하다
자동으로 스크립트를 구동하게 되면 3개월마다 갱신하여 인증서를 지속적으로 사용이 가능하다
1. let’s encrypt 클라이언트 설치
1 |
[root@xinet]# git clone https://github.com/letsencrypt/letsencrypt |
2. 인증서 발급
1 2 3 |
[root@xinet]# cd letsencrypt/ [root@xinet letsencrypt]# ./certbot-auto certonly --webroot --webroot-path=/free/home/xinet/html/ -d xinet.kr -d www.xinet.kr |
–wertoot-path : 현재 사용하는 도메인의 홈 경로를 지정해 준다
– d : 도메인 지정 www.xinet.kr xinet.kr 2개의 도메인을 같이 사용할때 한개의 도메인만 사용시에는 -d xinet.kr
3. 인증서 경로 확인 ( 인증서가 제대로 만들어 졌으면 해당 경로에 인증서가 저장되어 있다)
발급된 인증서는 /etc/letsencrypt/live/도메인명폴더에 저장된다
1 2 3 4 5 6 7 |
[root@xinet letsencrypt]# ls -l /etc/letsencrypt/live/xinet.kr/ 합계 4 -rw-r--r-- 1 root root 543 2017-02-28 21:01 README lrwxrwxrwx 1 root root 32 2017-02-28 21:01 cert.pem -> ../../archive/xinet.kr/cert1.pem lrwxrwxrwx 1 root root 33 2017-02-28 21:01 chain.pem -> ../../archive/xinet.kr/chain1.pem lrwxrwxrwx 1 root root 37 2017-02-28 21:01 fullchain.pem -> ../../archive/xinet.kr/fullchain1.pem lrwxrwxrwx 1 root root 35 2017-02-28 21:01 privkey.pem -> ../../archive/xinet.kr/privkey1.pem |
cert.pem : 인증서 파일
chin.pem : 인증서 발급자 파일
fullchin.pem : cert.pem 과 chain.pem을 하나로 합쳐놓은 파일
privkey.pem : 인증암호를 해독하는 개인키
현재 적용하려는 어플리케이션은 APACHE 버전이므로 cert.pem / chain.pem / privkey.pem 파일만 사용한다
4. 웹서버 적용 ( apache 적용)
1 |
[root@xinet letsencrypt]# vi /usr/local/apache/conf/extra/httpd-ssl.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Listen 443 # 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 # AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl SSLPassPhraseDialog builtin SSLSessionCache shmcb:/usr/local/apache/logs/ssl_scache(512000) SSLSessionCacheTimeout 300 SSLMutex file:/usr/local/apache/logs/ssl_mutex # <VirtualHost *:443> DocumentRoot /free/home/xinet/html ServerName xinet.kr ServerAlias www.xinet.kr SSLEngine on SSLCertificateFile /etc/letsencrypt/live/xinet.kr/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/xinet.kr/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/xinet.kr/chain.pem SSLCACertificateFile /etc/letsencrypt/live/xinet.kr/fullchain.pem </VirtualHost> |
5. 웹주소창에 https로 사이트 접속 테스트
6. 인증서 자동갱신 ( certbot-auto 를 이용)
다운로드 및 실행
1 2 3 4 |
[root@xinet ~]# cd /usr/local [root@xinet local]# wget https://dl.eff.org/certbot-auto [root@xinet local]# chmod 700 certbot-auto [root@xinet local]# /usr/local/certbot-auto renew --quiet |
certbot 이란 ? let’s encrypt 인증서를 자동으로 발급/갱신해주는 봇이다.
실행은 위와 같지만 매번 서버에 들어와서 해줄수 없기 때문에 cront으로 매일 1일마다 자동으로 실행되게
등록해 주면 된다
3. certbot crontab 등록
1 2 3 4 5 |
[root@xinet local]# crontab -e ### ssl update 0 1 * * * /usr/local/certbot-auto renew --quiet |
자동으로 등록을 하게 되면 인증서를 만료일 지나면 자동으로 갱신처리를 진행해 준다.