
CentOS 서버에 테스트 프로젝트를 하나 돌리고 있는데
Http 통신을 하고 있어서 외부에 보여주기 그래서
Https 통신을 할 수 있도록 세팅을 좀 해볼려한다.
sudo yum install certbot
yum 패키지 관리자를 이용해서 Cerbot 설치를 한다.
sudo certbot certonly --standalone -d demo.내도메인.com
cerbot 을 통해서 demo.내도메인.com 도메인에 대한 SSL 인증서를 발급받았다.
standalone 모드로 인증서를 발급 받기위해서 기존에 돌아가고 있던 Tomcat, nginx 를 중지한다.
standalone 모드 :
Cerbot이 자체적으로 간단한 웹 서버를 실행하여 Let's Encrypt 인증 과정을 처리하는 방식이다. 이때는 Cerbot이 Http-01 챌린지(포트80)을 통해 도메인 소유 여부를 확인한다.
sudo openssl pkcs12 -export -in /etc/letsencrypt/live/demo.내도메인.com/fullchain.pem \
-inkey /etc/letsencrypt/live/demo.내도메인.com/privkey.pem \
-out /etc/letsencrypt/live/demo.내도메인.com/keystore.p12 \
-name tomcat -CAfile /etc/letsencrypt/live/demo.내도메인.com/chain.pem -caname root
Tomcat에서 인증서를 사용하기 위해 openssl 을 사용하여 인증서와 개인 키 파일을 PKCS#12 형식(keystore.p12)로 변환해주었다.
비밀번호는 server.xml 에서 쓰일거니깐 입력하고, 비밀번호 확인부분도 동일하게 입력만 해주면 된다.
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="/etc/letsencrypt/live/demo.내도메인.com/keystore.p12"
type="RSA"
certificateKeystorePassword="설정한 비밀번호" />
</SSLHostConfig>
</Connector>
Https 커넥터를 추가하고 keystore 파일 경로와 비밀번호를 설정해준다.
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
이제 포트80요청을 HTTPS로 리다이렉트하도록 추가만 하면 끝!
Tomcat을 재시작하고 HTTPS가 적용되었는지 확인해보자.
음 추가로 Let's Encrypt의 인증서는 유효기간이 90일이다.
그래서 만료전에 주기적으로 갱신해야하는데 너무 귀찮다 ;;
그래서 그냥 자동으로 갱신 할 수 있도록 세팅을 해놓자
sudo crontab -e
Cerbot의 갱신 스크립트를 크론탭에 추가해서 주기적으로 실행 할 수 있도록한다.
0 0 * * * /usr/bin/certbot renew --quiet && /home/gaonsoft/www/gnbis/opt/apache-tomcat-8.5.65/bin/shutdown.sh && /home/gaonsoft/www/gnbis/opt/apache-tomcat-8.5.65/bin/startup.sh
이와 같이 크론탭 항목을 추가하여 매일 자정에
톰캣 서버 종료 및 실행을 해주어서 자동갱신을 완료한다.