본문 바로가기
Linux \ Ubuntu

[Tomcat] letsencrypt 인증서로 https적용하기

by 서피 2021. 6. 12.

letsencrypt로 https를 적용하는 방법이다.

 

 

 

1. certbot을 설치한다.

설치 진행을 물을 경우 안내에 따라 Y 혹은 엔터 키를 입력해준다.

$ sudo su
# apt-get install software-properties-common
# add-apt-repository ppa:certbot/certbot
# apt-get update
# apt-get install certbot

 

 

 

2. SSL인증서를 설치한다.

필요시 이메일도 입력해준다.

설치 도중에 약관이 출력되면 안내에 따라 동의를 입력한다.

# certbot certonly --standalone -d example.com

도메인 서브네임을 이용할 경우 아래처럼 -d 구문 여러개를 입력할 수 있다.

# certbot certonly --standalone -d example.com -d www.example.com

다음 명령어를 입력하였을 때 아래처럼 pem파일 4가지가 보인다면 정상이다.

# ls /etc/letsencrypt/live/example.com/
cert.pem  chain.pem  fullchain.pem  privkey.pem  README

 

 

위 코드 실행시 사이트에 연결할 수 없다는 오류가 다음과 같이 발생하는 경우가 있다.

문제 없이 잘 진행되었다면 3. 으로 넘어간다.

To fix these errors, please make sure that your domain name was    entered correctly and the DNS A/AAAA record(s) for that domain   contain(s) the right IP address

 

 

오류가 발생했을 경우 다음 코드로 진행한다.

$ letsencrypt certonly --manual --preferred -challenges=dns -d example.com -d *.example.com

 

대화창이 뜨면 Y를 입력한다.

 

 

아래 빨간색 부분을 Route53에 입력해야 한다.

Route53의 도메인 레코드 설정으로 이동한다.

 

 

 

레코드 정의를 아래처럼 추가한다.

'레코드 유형에 따른 IP주소 또는 다른 값'을 선택하고, 텍스트 필드에는 앞서 받았던 코드를 입력한다.

 

 

추가된 모습. 쌍따옴표는 빼고 입력한다.

 

 

 

성공하였다면 아래처럼 결과가 출력된다.

 

 

 

 

다음 명령어를 입력하였을 때 아래처럼 pem파일 4가지가 보인다면 정상이다.

# ls /etc/letsencrypt/live/example.com/
cert.pem  chain.pem  fullchain.pem  privkey.pem  README

 

 

 

 

 

3. 생성한 인증서를 tomcat으로 복사

cert.pem, chain.pem, privkey.pem 파일을 /opt/tomcat/config 폴더로 복사한다

# cd /etc/letsencrypt/live/example.com
# cp cert.pem /opt/tomcat/conf
# cp chain.pem /opt/tomcat/conf
# cp privkey.pem /opt/tomcat/conf

 

 

4. .pem 파일에 대한 권한 부여

tomcat사용자에 대해 pem파일에 대한 소유권을 부여한다.

# chown tomcat:tomcat *.pem

 

 

5. server.xml SSL설정

server.xml 파일을 열어 redirectPort 속성을 찾아 값을 443으로 변경해준다.

기본값은 8443으로 되어있다.

<Connector port="8080" protocol="HTTP/1.1"
       connectionTimeout="20000"
       redirectPort="443" />

 

같은 파일에서 SSLHostConfig 태그를 찾는다.

원래 주석처리 되어있는 것을 주석 해제하여 cert, crivkey, chain 파일의 경로를 입력한다.

port값은 위에서 설정한 값과 동일한 443으로 잘 되어있는지 확인한다.

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateFile="conf/cert.pem"
                     certificateKeyFile="conf/privkey.pem"
                     certificateChainFile="conf/chain.pem" />
    </SSLHostConfig>
</Connector>

 

이로써 https를 적용하는 과정이 완료되었다.

아마존 EC2 등 사용하는 서버에 따라 443 포트를 열어주는 보안 설정이 필요하다.

EC2의 경우 아래 방법으로 433포트를 열어준다.

https://bmangrok.tistory.com/entry/EC2-%EB%B3%B4%EC%95%88-%EA%B7%B8%EB%A3%B9%EC%97%90%EC%84%9C-%ED%8F%AC%ED%8A%B8-%EC%97%B4%EC%96%B4%EC%A3%BC%EA%B8%B0


 

letsencrypt로 발급받은 키는 90일마다 갱신이 필요하며, 아래는 키를 재발급하는 방법이다.

 

 

톰캣 서버를 끈 후, 키를 재발급한다.

# certbot certonly --standalone -d example.com

 

재발급한 키를 conf폴더로 복사한다.

# cd /etc/letsencrypt/live/example.com
# cp cert.pem /opt/tomcat/conf
# cp chain.pem /opt/tomcat/conf
# cp privkey.pem /opt/tomcat/conf

 

톰캣 서버를 재시작한다.

 

참고

댓글