Tomcat은 JKS, PKCS11 혹은 PKCS12 포맷의 Keystore를 지원한다. JKS 포맷은 Java Standard Keystore 포맷이며, JDK에 포함되어 있는 Keytool 명령어를 사용하여 생성할 수 있다. PKCS12 포맷은 인터넷 표준 포맷이고, OpenSSL를 사용하여 생성할 수 있다. 이글 에서는 설정이 좀더 간편한 JKS 포맷의 Keystore를 사용한 설정 방법을 정리한다.
1. SSL 키 파일 생성
- 아래와 같이 keytool 명령어를 이용하여 Keystore 파일을 생성한다.
$JAVA_HOME/bin/keytool -genkey -alias <keystore_alias> -keyalg RSA -keystore <keystore_file>
keystore 암호를 입력하십시오: #Tomcat설정에 사용됨으로 기억해야 함.
새 암호를 다시 입력하십시오: #암호확인
성을 입력하십시오.
[Unknown]: Dim #기본갑 : Unknown
조직 단위 이름을 입력하십시오.
[Unknown]: MyGroup #기본갑 : Unknown
조직 이름을 입력하십시오.
[Unknown]: MyTeam #기본갑 : Unknown
구/군/시 이름을 입력하십시오?
[Unknown]: MyCity #기본갑 : Unknown
시/도 이름을 입력하십시오.
[Unknown]: MyProvince #기본갑 : Unknown
이 조직의 두 자리 국가 코드를 입력하십시오.
[Unknown]: KR #기본갑 : Unknown
CN=MyGroup, OU=MyGroup, O=MyTeam, L=MyCity, ST=MyProvince, C=KR이(가) 맞습니까?
[아니오]: y
<tomcat>에 대한 키 암호를 입력하십시오.
(keystore 암호와 같은 경우 Enter를 누르십시오): #엔터입력
* 위의 명령을 수행하고 나면 명령을 실행한 디렉토리에 ".keystore" 파일이 생성됨
3. CSR(Certificate Signing Reuest) 파일 생성
- Verisign과 같은 CA(Certificat Autority) 공인 인증서 발급기관으로 부터 인증서를 발급 받기 위한 CSR 파일 생성 (위에서 생성한 keystore파일 생성)
keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore <your_keystore_filename>
4. 발급받은 인증서를 keystore 파일에 저장
- CA로 부터 발급받은 인증서르 keystore 파일에 저장한다.
# Import the Chain Certificate into your keystore
keytool -import -alias root -keystore <your_keystore_filename> -trustcacerts -file <filename_of_the_chain_certificate>
# And finally import your new Certificate
keytool -import -alias tomcat -keystore <your_keystore_filename> -file <your_certificate_filename>
5. Tomcat 설정
- HTTPS 프로토콜을 제공하기 위한 Connector설정을 server.xml 파일에 추가한다.
<Service name="Catalina">
. . .
<Connector
port="8443" maxThreads="100"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="keystore 파일 경로" keystorePass="keystore 패스워드"
clientAuth="false" sslProtocol="TLS"/>
. . .
</Service>
4. 참고자료
- Tomcat HTTPS 설정 참고자료 : http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html