Tomcat SSL 인증서 설치/적용 가이드

사전 구성 환경

  • Java JDK or JRE http://www.java.com/
  • TLS / SHA-2(sha256) 암호화 지원 모듈 구성/활성 확인 필수

진행 과정

  1. 키스토어 생성
  2. CSR(Certificate Signing Request) 생성
  3. 인증서 발급 신청 제출
  4. 인증서 설치 적용
  5. 정상 적용 완료 테스트

키스토어 생성

본 과정은, 인증서 신청시 자동생성 이용을 권장합니다
keytool -genkey -keyalg RSA -sigalg SHA256withRSA -alias SecureSign -keysize 2048 -keystore SecureSign.key
  • -keyalg : 키알고리즘으로 RSA 을 지정합니다
  • -sigalg : 서명알고리즘으로 SHA256 을 지정합니다.
  • -alias : 대체 이름으로 영문 단어를 지정하며, 특수문자등은 사용하지 않아야 합니다.
  • -keystore : 개인키 파일

Result

keystore 암호를 입력하십시오: (6자이상)
새 암호를 다시 입력하십시오:
이름과 성을 입력하십시오. (인증서 도메인 입력)
[Unknown]: www.securesign.kr
조직 단위 이름을 입력하십시오.
[Unknown]: dept
조직 이름을 입력하십시오.
[Unknown]: my company
구/군/시 이름을 입력하십시오?
[Unknown]: seocho
시/도 이름을 입력하십시오.
[Unknown]: seoul
이 조직의 두 자리 국가 코드를 입력하십시오. (대문자)
[Unknown]: KR
CN=www.securesign.kr, OU=dept, O=my company, L=seocho, ST=seoul, C=KR(가) 맞습니까?
[아니오]: y

<SecureSign> (alias명)
에 대한 키 암호를 입력하십시오. enter (keystore 암호와 key 암호는 동일하게 설정 권장)
(keystore 암호와 같은 경우 Enter를 누르십시오):

Wildcard

CN : *.example.com 과 같은 패턴 이어야 합니다.

MultiDomain

CN : example.com 대표성을 가진 도메인 1개만 입력 합니다. 포함될 나머지 도메인 목록은 신청서에 별도 입력합니다.

CSR(Certificate Signing Request) 생성

본 과정은, 인증서 신청시 자동생성 이용을 권장합니다
keytool -certreq -alias SecureSign -keyalg RSA -sigalg SHA256withRSA -file SecureSign.csr -keystore SecureSign.key
  • -keyalg : 키알고리즘으로 RSA 을 지정합니다
  • -sigalg : 서명알고리즘으로 SHA256 을 지정합니다.
  • -alias : 대체 이름으로 영문 단어를 지정하며, 특수문자등은 사용하지 않아야 합니다.
  • -keystore : 개인키 파일
  • -file : CSR 저장할 파일

Result

keystore 암호를 입력하십시오: enter

생성된 CSR 예제

본 과정은, 인증서 신청시 자동생성 이용을 권장합니다
-----BEGIN CERTIFICATE REQUEST-----
MIIC5TCCAc0CAQAwgZ8xCzAJBgNVBAYTAktSMQ4wDAYDVQQIEwVTZW91bDERMA8G
A1UEBxMIR2FuZy1uYW0xGDAWBgNVBAoTD1NlY3VyZUxheWVyIEluYzERMA8GA1UE
-- 중략 --
wxd+87gwsvAC2dyK8I4N1ttXDRJcDPCDe1BGqWvYYAZN7FbvnbHCM7y/SN++pxbS
jbnkoe8uStQvfCo6DW5MZHUli5+lRU/UpA==
-----END CERTIFICATE REQUEST-----

앞서 생성한 CSR 파일은 Base64 포맷의 PEM Text 이며, 텍스트 편집기를 이용하여 파일을 오픈합니다. -----BEGIN ~ REQUEST----- 까지 포함하여 내용 전체를 복사하여 신청서에 입력합니다. (----- 를 누락하거나, 새로운 빈출이 추가되지 않도록 주의하세요)

서버 인증서 조합 (CSR 직접 생성시)

  • keytool -import -trustcacerts -alias AddTrustExternalCARoot -file AddTrustExternalCARoot.crt -keystore SecureSign.key
  • keytool -import -trustcacerts -alias COMODORSAAddTrustCA -file COMODORSAAddTrustCA.crt -keystore SecureSign.key
  • keytool -import -trustcacerts -alias COMODORSACA -file COMODORSADomainValidationSecureServerCA.crt -keystore SecureSign.key
  • keytool -import -trustcacerts -alias SecureSign -file domain_xxxxx.crt.pem -keystore SecureSign.key

* 개인키가 CSR 생성 서버에만 - CSR 직접 생성 - 존재하는 경우에, 개인키에 발급된 서버/체인/루트 통합합니다.
* 루트/체인 인증서는 상품별로 차이가 있으므로, 발급 완료시 첨부된 파일 내역에서 확인 가능합니다.
* CSR 자동생성 신청의 경우, .pfx / .jks 에 모두 통합되어 있습니다.

Server.xml - JavaKeyStore 적용 예제

Tomcat 4+
<Connector
port="443" scheme="https" secure="true" SSLEnabled="true"
keystoreFile=".jks 파일" keystorePass=".jks 패스워드"
sslProtocol="TLS"
/>

* JavaKeyStore(.jks) 는, 인증서 포맷 변환 가이드를 참조해서 변환하여 적용할 수 있습니다.
* 예제 xml 에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 서버 설정값을 사용하시기 바랍니다.

Server.xml - PFX 적용 예제

Tomcat 4+
<Connector
port="443" SSLEnabled="true"
scheme="https" secure="true" sslProtocol="TLS"
keystoreFile="인증서경로/domain_xxxxx.pfx" keystorePass="pfx암호" keystoreType="PKCS12"
/>

* pfx 포맷은, [CSR 자동생성] 신청시 개인키, 서버인증서, 체인인증서, 루트인증서가 포함되어 있습니다.
* 예제 xml 에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 서버 설정값을 사용하시기 바랍니다.

Server.xml - APR 환경 적용 예제 Apache Portable Runtime

Tomcat 5.5+
<Connector
port="443" SSLEnabled="true"
scheme="https" secure="true" sslProtocol="TLS" SSLEngine="on"
SSLPassword="개인키 암호"
SSLCertificateKeyFile=/인증서파일경로/개인키 ex. domain_xxxxx.key.pem
SSLCertificateFile=/인증서파일경로/서버인증서 ex. domain_xxxxx.crt.pem
SSLCertificateChainFile=/인증서파일경로/체인인증서ex. chain-bundle.pem
SSLCACertificateFile=/인증서파일경로/루트인증서 ex. AddTrustExternalCARoot.crt
/>

* AprLifecycleListener 리스너 구성 및 SSLEngine 활성화가 되어 있는지 미리 확인하시기 바랍니다.
* 예제 xml 에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 서버 설정값을 사용하시기 바랍니다.

주요 이슈 사항