Sangil's blog

https://github.com/ChoiSangIl Admin

Docker Tomcat Https SSL 인증서 적용하기(LETSENCRYPT) DEV / DOCKER

2020-03-16 posted by sang12


이번에 무료로 SSL인증서를 발급해주는 LETSENCRYPT 를 통해 인증서를 발급 받았는데요 (http://sang12.co.kr/192/). 이제 실제로 해당 인증서를 Docker Container로 배포 되어 있는 Tomcat에 적용해 보겠습니다. Https를 적용하면 구글 검색순위도 높아진다죠..? :)

Docker Tomcat에서 SSL 적용하는 방법은 기존 Tomcat에서 적용하는 것과 별반 다를바 없습니다. 방법만 다를뿐.. 
일단 인증서를 적용해주기 위해 해당 tomcat 서버에 접속해서 server.xml이 어디에 있는지 확인합니다.

docker exec -it containerId bash 로 띄워져있는 tomcat에 접속합니다. 그러면 /usr/local/tomcat/conf 폴더 아래에 server.xml이 존재하는걸 확인 할 수 있는데요. 저희는 docker를 사용하니 해당 파일을 volume을 이용하여 외부로 빼서 설정을 변경 해 줄겁니다.

먼저, /usr/local/tomcat/conf/server.xml 파일을 host파일로 복사합니다.
docker cp 80f9cca1fc5c(containerId):/usr/local/tomcat/conf/server.xml ./
그리고 docker-compose를 이용하여 포트와 Volume를 설정해줍니다.

-docker-compose.xml

version: '3.7'
services:
    tomcat:
     container_name: blog_tomcat
     restart: always
     environment:
      TZ: 'Asia/Seoul'
     build:
      context: .
      args:
       warpath: ./war/ROOT.war
       dockerfile: ./Dockerfile
     ports:
      - '80:8080'
      - '443:8443'
     volumes:
      - ./tomcatVol/logs/:/usr/local/tomcat/logs/
      - ./imageVol/upload/:/usr/local/tomcat/webapps/upload/
      - ./tomcatVol/conf/server.xml:/usr/local/tomcat/conf/server.xml
      - ./tomcatVol/conf/keystore.p12:/usr/local/tomcat/conf/keystore.p12

톰캣을 올리기 위한 docker-compose 파일입니다. 여기서 보셔야 될 부분은 -./tomcatVol/conf/server.xml:/usr/local/tomct/conf/server.xml 톰캣 설정 파일을 연동 해주는 부분과 443 port를 8443포트로 연결해주는 부분 그리고  - ./tomcatVol/conf/keystore.p12:/usr/local/tomcat/conf/keystore.p12 인증서를 연결해주는 부분입니다.

이제 해당 이미지를 올리고 정상적으로 파일이 volume설정 되었는지 확인해봅시다. 수줍게 살포시 호스트에있는 server.xml에 test 문구를 넣고 해당 컨테이너에 접속해서 server.xml을 찍어봤습니다. 정상적으로 연동 되었네요(추가로 사진에는 인증서가없는데 인증서가 정상적으로 연동 되었는지도 확인합시다!). 그럼 마지막으로 server.xml 파일을 수정해주고 도커 컨테이너를 재시작 시켜주면 끝납니다!


자! server.xml을 수정해 줍시다. 그리고 Docker 컨테이너를 restart 해주면!!

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
      maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
      clientAuth="false" sslProtocol="TLS"
      keystorePass="yourePassword" keystoreFile="/usr/local/tomcat/conf/keystore.p12" >
</Connector>

그리고 https://sang12.co.kr 로 접속하면..! 


블로그를 처음부터 만들고 호스팅하는데 생각보다 많은 시간이 드네요(그래서 티스토리를 쓰나봐요 엉엉). 그래도 이렇게 하나하나 해나가는게 재미로 만들어가고 있습니다 언젠간 끝나겠죠 :) 아참! LETSENCRYPT는 인증서 유효기간이 90일이여서 90일안에 갱신을 해줘야하는데요. 갱신하는 방법도 포스팅하도록 하겠습니다. 다들 즐코하세요 ^^

#스프링부터 SSL적용 #DOCKER TOMCAT SSL #스프링부트 HTTPS #TOMCAT HTTPS #DOCKER TOMCAT HTTPS
REPLY