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

사전 구성 환경

  • Java JDK or JRE http://www.java.com/
  • TLS / SHA-2(sha256) 암호화 지원 모듈 구성/활성 확인 필수
  • MD5, RC4 등 국제 보안 기구에서 해제를 권장하는 취약한 암호화 모듈 비활성화
  • SSL 2.0, 3.0 및 TLS 1.0 1.1 프로토콜 접속 허용 해제. 최신 TLS 1.2 1.3 설정 권장

진행 과정

  1. 키스토어 생성
  2. CSR(Certificate Signing Request) 생성
  3. 인증서 발급 신청 제출
  4. 인증서 발급 완료 (발급내역서/파일설명서 PDF 참조)
  5. 인증서 설치 적용 - 신규,갱신,재발급,도메인추가
  6. 정상 적용 완료 테스트

키스토어 생성 예제

- SSL 인증서 발급 신청서 작성시, CSR 입력 단계에서 온라인 "CSR 자동생성" 이용을 권장합니다. (현재 과정 필요 없음)
- CSR 자동생성 발급 완료시, "개인키, 서버인증서, 체인인증서, 루트인증서" PEM 파일이 모두 포함되어 있습니다.
- 추가 포함된 "pfx / jks" 패키지에는, "개인키+서버인증서+체인인증서+루트인증서" 가 모두 통합되어 있습니다.
keytool -genkey -keyalg RSA -sigalg SHA256withRSA -alias SecureSign -keysize 2048 -keystore domain.jks
  • -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) 생성 예

- SSL 인증서 발급 신청서 작성시, CSR 입력 단계에서 온라인 "CSR 자동생성" 이용을 권장합니다. (현재 과정 필요 없음)
- CSR 자동생성 발급 완료시, "개인키, 서버인증서, 체인인증서, 루트인증서" PEM 파일이 모두 포함되어 있습니다.
- 추가 포함된 "pfx / jks" 패키지에는, "개인키+서버인증서+체인인증서+루트인증서" 가 모두 통합되어 있습니다.
keytool -certreq -alias SecureSign -keyalg RSA -sigalg SHA256withRSA -file SecureSign.csr -keystore domain.jks
  • -keyalg : 키알고리즘으로 RSA 을 지정합니다
  • -sigalg : 서명알고리즘으로 SHA256 을 지정합니다.
  • -alias : 대체 이름으로 영문 단어를 지정하며, 특수문자등은 사용하지 않아야 합니다.
  • -keystore : 개인키 파일
  • -file : CSR 저장할 파일
  • (예제에 사용된 옵션 값 등은 예제용이므로, 실제 해당 도메인 정보로 지정하시기 바랍니다)

Result

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

생성된 CSR 예제

- SSL 인증서 발급 신청서 작성시, CSR 입력 단계에서 온라인 "CSR 자동생성" 이용을 권장합니다. (현재 과정 필요 없음)
- CSR 자동생성 발급 완료시, "개인키, 서버인증서, 체인인증서, 루트인증서" PEM 파일이 모두 포함되어 있습니다.
- 추가 포함된 "pfx / jks" 패키지에는, "개인키+서버인증서+체인인증서+루트인증서" 가 모두 통합되어 있습니다.
-----BEGIN CERTIFICATE REQUEST-----
MIIC5TCCAc0CAQAwgZ8xCzAJBgNVBAYTAktSMQ4wDAYDVQQIEwVTZW91bDERMA8G
A1UEBxMIR2FuZy1uYW0xGDAWBgNVBAoTD1NlY3VyZUxheWVyIEluYzERMA8GA1UE
-- 중략 --
wxd+87gwsvAC2dyK8I4N1ttXDRJcDPCDe1BGqWvYYAZN7FbvnbHCM7y/SN++pxbS
jbnkoe8uStQvfCo6DW5MZHUli5+lRU/UpA==
-----END CERTIFICATE REQUEST-----

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

인증서 발급 완료

- 발급 완료 후에는, 메일첨부 또는 주문상세의 압축파일(zip)에 인증서 파일이 포함되어 있습니다.
- 서버 적용에 필요한 파일들에 대해서, 발급 내역서 PDF 및 루트/체인 설명 PDF를 통해서 미리 숙지해야 합니다.
- 이후 과정 부터는, 서버에 SSL 인증서 설치/적용/확인 절차 입니다. (인터넷에 공개된 설정법과 차이 없음)

서버 인증서 jks 포맷 조합 예 (CSR 직접 생성한 경우)

  • keytool -import -trustcacerts -alias AddTrustRoot -file AddTrustRoot.crt.pem -keystore domain.jks
  • keytool -import -trustcacerts -alias USERTrustRSAChain -file USERTrustRSAChain.crt.pem -keystore domain.jks
  • keytool -import -trustcacerts -alias SectigoRSACA -file SectigoRSADomainValidationSecureServerCA.crt.pem -keystore domain.jks
  • keytool -import -trustcacerts -alias SecureSign -file domain_xxxxx.crt.pem -keystore domain.jks
  • (예제에 사용된 옵션 값 등은 예제용이므로, 실제 해당 도메인 정보로 지정하시기 바랍니다)

* 개인키가 CSR 생성 서버에만 - CSR 직접 생성 - 존재하는 경우에, 개인키에 발급된 "서버/체인/루트" 인증서를 통합합니다.
* 루트/체인 인증서는 상품별로 차이가 있으므로, 발급 완료시 첨부된 파일 내역에서 확인 가능합니다.
* CSR 자동생성 신청의 경우, .pfx / .jks 포맷 파일을 제공해 드리며 파일에 모두 통합되어 있습니다. (조합 과정 불필요)
* 필요에 따라서 .pem 파일을 이용하여 조합하거나 .pfx, .jks 파일에서 추가/변경/분리/조합하면 됩니다. (변환매뉴얼참조)

Server.xml - JavaKeyStore 적용 예제 (CSR 자동 생성 이용 또는 jks 조합 후)

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

* JavaKeyStore(.jks) 는, [CSR 자동생성] 신청시 개인키+서버인증서+체인인증서+루트인증서가 포함되어 있습니다.
* CN(일반이름) 과 Alias 가 다르면, Alias Property 를 별도로 지정 해주어야 합니다.
* CSR 자동 생성 이용시, 개인키에는 패스워드가 지정되지 않습니다. (별도 지정 필요시 변환 매뉴얼 참조)
* CSR 자동 생성 이용시, .pfx / .jks 패스워드는 발급내역서 PDF 또는 주문상세 페이지를 참조하시기 바랍니다.
* 예제 xml 에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 서버 설정값을 사용하시기 바랍니다.

Server.xml - PFX 적용 예제 (CSR 자동 생성 이용시)

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

* pfx 포맷은, [CSR 자동생성] 신청시 개인키+서버인증서+체인인증서+루트인증서가 포함되어 있습니다.
* CN(일반이름) 과 Alias 가 다르면, Alias Property 를 별도로 지정 해주어야 합니다.
* CSR 자동 생성 이용시, 개인키에는 패스워드가 지정되지 않습니다. (별도 지정 필요시 변환 매뉴얼 참조)
* CSR 자동 생성 이용시, .pfx / .jks 패스워드는 발급내역서 PDF 또는 주문상세 페이지를 참조하시기 바랍니다.
* 예제 xml 에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 서버 설정값을 사용하시기 바랍니다.

Server.xml - APR 환경 적용 예제 Apache Portable Runtime / PEM 직접 적용

Tomcat 5.5+
<Connector
port="443" SSLEnabled="true"
scheme="https" secure="true" sslProtocol="TLS" SSLEngine="on"
SSLPassword="개인키 암호" (*CSR 수동 생성시에 설정 또는 인증서 변환 매뉴얼 참조)
SSLCertificateKeyFile=/인증서파일경로/개인키 ex. domain_xxxxx.key.pem
SSLCertificateFile=/인증서파일경로/서버인증서 ex. domain_xxxxx.crt.pem
SSLCertificateChainFile=/인증서파일경로/체인인증서ex. chain-bundle.pem
SSLCACertificateFile=/인증서파일경로/루트인증서 ex. AddTrustRoot.crt.pem
/>

* 루트/체인 인증서는 상품별로 차이가 있으므로, 발급 완료시 첨부된 파일 내역에서 확인 가능합니다.
* AprLifecycleListener 리스너 구성 및 SSLEngine 활성화가 되어 있는지 미리 확인하시기 바랍니다.
* CSR 자동 생성 이용시, 개인키에는 패스워드가 지정되지 않습니다. (별도 지정 필요시 변환 매뉴얼 참조)
* 예제 xml 에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 서버 설정값을 사용하시기 바랍니다.

설치 적용 확인 및 변환

* 서버에 SSL 설정 적용 후, 웹서버를 재시작하여 시작시 오류 또는 경고가 있는지 콘솔/데몬 로그를 필히 확인해야 합니다. (필수 확인 사항)
* PC 및 스마트폰의 "Chrome / Firefox / IE / Edge" 각 웹브라우져에서 "루트,체인,SSL,TLS" 경고가 발생 하는지 확인해야 합니다.

SSL 설치/적용 트러블슈팅 SSL 설치 적용 확인 하기 체인인증서 적용 확인 방법 인증서 포맷 변환 방법 TrustLogo 적용 방법