본문 바로가기
+ Application

[Tomcat] 톰켓 SSL 인증서 설정하기

by :: Teacher :: 2021. 9. 18.
728x90
반응형

[Tomcat] 톰켓 SSL 인증서 설정하기

웹 서비스를 구성할 때 Tomcat(톰켓)을 사용하는 경우 Apache(아파치)와 함께 구성하여 서비스를 사용하는 게 일반적이다.

그래서 HTTPS와 같이 SSL 인증서 설정들도 대부분 Apache에서 설정하여 사용하고, 인증서를 구매하여 관련 정보를 받는 경우에도

Apache / Nginx와 같은 부분에 대해서만 설정 및 적용할 수 있도록 전달받는다. 

그러나 Tomcat(톰켓)을 이용해 웹 서비스를 바로 사용하는 경우가 간간히 있다. 

이때도 HTTPS를 사용하는 경우 SSL 인증서 설정을 하게 되는데 이때 Apache / Nginx에서 사용하기 위해 받은 인증서를 바로 사용할 수가 없다. 

그럼 Tomcat에서는 어떻게 적용하는지 한번 알아보도록 하자.

728x90

1. Apache or Nginx 어떤 인증서를 사용해하는가?

일단 어떤 인증서를 이용해야 하는지 알아야 한다.

기본적으로 Tomcat의 경우는 Apache 인증서를 가지고 Tomcat에 맞도록(.jks) 변환을 하여 사용해야 한다.

2. Apache 인증서 변환하기

Tomcat에서 사용하기 위해서는 무려 두 번의 변환 과정을 거쳐야 한다.

일단 Apache 인증서를 하나의 파일로 합치고 pkcs12 형식(.pfx)으로 변경하여 적용해야 한다.

2.1 Apache 인증서 파일 한 개로 합치기

  • $ cat test.com.crt chainca.crt > test.com.pem
# Apaceh 인증서 합치기

$ ls
chainca.crt  test.com.crt  test.com.key

$ cat test.com.crt chainca.crt > test.com.pem


2.2 openssl을 이용하여 pkcs12 형식(.pfx)으로 변환하기

  • $ openssl pkcs12 -export -in test.com.pem -inkey test.com.key -out test.com.p12 -name test

입력 후 사용할 패스워드를 지정한다.

지정한 패스워드는 변환 확인 시 그리고 Tomcat Server.xml 파일 수정 시 필요하니 잊어버리지 않도록 하자. 

# openssl을 이용하여 pkcs12 형식(.pfx)으로 변환하기

$ ls
chainca.crt  test.com.crt  test.com.key  test.com.pem

$ openssl pkcs12 -export -in test.com.pem -inkey test.com.key -out test.com.p12 -name test
Enter Export Password:
Verifying - Enter Export Password:


2.3 정상 변환 확인하기

  • $ keytool -list -v -keystore test.com.p12 -storetype pkcs12
# 정상적으로 변환 되었는지 확인하기

$ ls
chainca.crt  test.com.crt  test.com.key  test.com.p12  test.com.pem

$ keytool -list -v keystore test.com.p12 -storetype pkcs12
키 저장소 비밀번호 입력:
키 저장소 유형: PKCS12
키 저장소 제공자: SUN

키 저장소에 1개의 항목이 포함되어 있습니다.

별칭 이름: test
생성 날짜: 2021. 9. 17.
항목 유형: PrivateKeyEntry
인증서 체인 길이: 3
... 이하 생략 ...
*******************************************
*******************************************
반응형

3. Tomcat 적용하기

이제 Apache 인증서를 Tomcat에 적용 가능하도록 변환 작업을 완료하였다. 

그럼 Tomcat에 설정을 해보도록 하자.

  • $ vi {tomcat_path}/conf/server.xml

server.xml 파일에서 Connector(커넥터) 설정값에 사용할 SSL Port / 인증서 경로 / 해당 인증서 패스워드 등을 작성해주도록 하자.

# Tomcat Server.xml 적용하기

$ vi {tomcat_path}/conf/server.xml
... 이하 생략 ...
<Connector port="443" maxHttpHeaderSize="8192" 
maxThreads="150" enableLookups="false" acceptCount="100" 
connectionTimeout="20000" disableUploadTimeout="true" 
protocol="org.apache.coyote.http11.Http11NioProtocol" 
SSLEnabled="true" scheme="https" secure="true" 
clientAuth="false" sslProtocol="TLS" 
keystoreFile="{인증서 경로}" keystoreType="PKCS12" 
keystorePass="{인증서 패스워드}"/>
... 이하 생략 ...

이제 서비스 구동을 하게 되면 지정한 SSL Port를 통해서 인증서가 적용되어 웹 서비스가 구동됨을 확인할 수 있다. 

대부분 맨 위에서 이야기 한대로 Tomcat은 Apache와 같이 사용됨에 따라서 이와 같은 설정들은 대부분 Apache에서 하고 있다. 그러나 Tomcat을 이용하여 독립적으로 웹 서비스를 운영 시에는 꼭 SSL 인증서 적용하여 사용하도록 하자.

4. 같이 보면 좋은 문서

728x90
반응형

댓글


loading