Server/SSL

[letsencrypt] Let's Encrypt 인증서 설치 및 적용 자동 재갱신 방법

히진 2018. 9. 2. 02:36
반응형

 

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일 이전 부터만 가능 

※ 인증서 재 갱신 후 재기동을 시켜주어야 인증서가 적용 완료됩니다. 


반응형