[letsencrypt] Let's Encrypt 인증서 설치 및 적용 자동 재갱신 방법
Let's Encrypt는 사용자에게 무료로 인증서를 발급해주는 비영리기관이다. 모질라 재단, 페이스북, 구글 등 많은 업체가 스폰서로 등록되어 있다. 발급된 인증서는 3개월간 사용할 수 있으며, 만료 전 갱신하면 계속해서 사용이 가능하다. 유효기간이 짧고 DV 및 와일드카드 인증서만 발급이 가능하다는 단점이 있다.
Let's Encrypt (SSL 인증서 설치)
$ yum install git (git을 이용하여 letsencrypt를 받기 위함)
$ mkdir /usr/local/src/letsencrypt
$ cd /usr/local/src/letsencrypt
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./certbot-auto certonly --standalone -d xxxx.xxxx.com[Domain입력]
- standalone 명령어를 통해 인증서 발급 요청
※ standalone을 통한 인증서 발급은 반드시 80포트 열려 있어야 한다.
※ 서버가 돌아가고 있으면 안되며 Let's Encrypt에서는 도메인을 인증하여 인증서를 발급하기 때문에 해당 서버 IP에 도메인이 생성되어 있어야 한다.
※ 아래와 같은 내용이 나오면 정상적으로 인증서 발급 성공
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/xxx.xxxx.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/xxx.xxxx.com/privkey.pem
Your cert will expire on 2018-01-10. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
※ 인증서는 /etc/letsencrypt/live/[domain name] 에 생성되어 있다.)
※ 인증서 발급로그는 cd /var/log/letsencrypt 에 저장되며 인증서 발급 실패시 해당 로그 확인 후 진행
Let's Encrypt 적용 (Tomcat)
1. SSL 인증서 적용을 위한 ARP 설치
A. APR은 Apache2 버전이 설치되면 자동으로 설치된다.
설치 되어 있다면 $APACHE_HOME/bin/apr-1-config 를 확인 한다.
B. Apache2가 설치되어 있지 않을경우
$ wget http://apache.mirror.cdnetworks.com/apr/apr-1.6.2.tar.gz
$ gzip -d apr-1.6.2.tar.gz
$ tar -xvf apr-1.6.2.tar
$ configure --prefix=/sw/apache/apr-1.6.2
$ make
$ make install
2. Tomcat에 pem 인증서를 적용하기 위해서는 Tomcat Native Library 설치하여야 한다.
$ cd /apache-tomcat-8.5.20/bin
- Tomcat Native Library 설치 파일이 있는 곳으로 이동 (Tomcat 설치시 기본 제공)
$ gzip -d tomcat-native.tar.gz
$ tar -xvf tomcat-native.tar
$ cd tomcat-native-1.2.12-src/native
$ ./configure --prefix=/apache-tomcat-8.5.20 --with-apr=/sw/apache/apr162/bin/apr-1-config --with-java-home=/install/software/jdk1.8.0_144/
(configure에 ap162는 apr설치 경로로 지정한다)
$ make
$ make install
$ vim setenv.sh
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/apache-tomcat-8.5.20/lib
export LD_LIBRARY_PATH
:wq!
$ ./shutdown.sh (apr 적용을 위한 Tomcat 재기동)
$ ./start.sh
3. Tomcat에 인증서 적용
$ vim /apache-tomcat-8.5.20/conf/server.xml
<Connector executor="tomcatThreadPool" SSLEnabled="true"
port="443"
protocol="HTTP/1.1"
server="inavi"
maxPostSize="-1"
maxKeepAliveRequests="2000"
connectionTimeout="5000"
disableUploadTimeout="false"
connectionUploadTimeout="10000"
enableLookups="false"
maxParameterCount="100"
acceptCount="2000"
redirectPort="8443"
compression="force"
compressionMinSize="1024"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
scheme="https" secure="true"
SSLHonorCipherOrder="true"
SSLCertificateFile="/etc/letsencrypt/live/xxxx.xxxx.com/cert.pem"
SSLCertificateKeyFile="/etc/letsencrypt/live/xxxx.xxxx.com/privkey.pem"
SLCACertificateFile="/etc/letsencrypt/live/xxxx.xxxx.com/fullchain.pem"
/>
:wq!
Tomcat 재기동 후 https://domain.com 접속하여 https 인증서 적용 확인
Let's Encrypt 적용 (Apache)
1. Tomcat과 동일하게 httpd conf 파일에 해당 설정 추가
<VirtualHost *:443>
...
SSLCertificateFile="/etc/letsencrypt/live/xxxx.xxxx.com/cert.pem"
SSLCertificateKeyFile="/etc/letsencrypt/live/xxxx.xxxx.com/privkey.pem"
SLCACertificateFile="/etc/letsencrypt/live/xxxx.xxxx.com/fullchain.pem"
...
</VirtualHost>
Let's Encrypt 자동 재갱신 (Cron 등록)
$ vim /src/letsencrypt.sh
#!/bin/bash
# 인증서를 갱신하는 Script 입니다.
/usr/local/src/letsencrypt/letsencrypt/./letsencrypt-auto renew >> /log/letsencrypt/letsencrypt-renew-`date +%Y%m%d`.log;
:wq!
$ chmod 755 /src/letsencrypt.sh
$ crontab -e (매시 00시 15분에 인증서 재갱신 요청)
00 15 * * * /src/letsencrypt.sh
$ crontab -l (Cron이 정상적으로 적용 되어있는지 확인)
※ 인증서 재 갱신은 인증서 만료 30일 이전 부터만 가능
※ 인증서 재 갱신 후 재기동을 시켜주어야 인증서가 적용 완료됩니다.