본문 바로가기
개발/WEB

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

by 카루딘 2019. 1. 7.
반응형

출처: https://www.securesign.kr/guides/Tomcat-SSL-Certificate-Install



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

사전 구성 환경

  • Java JDK or JRE http://www.java.com/ 
  • TLS / SHA-2(sha256) 암호화 지원 모듈 구성/활성 확인 필수
  • MD5, RC4 등 국제 보안 기구에서 해제를 권장하는 취약한 암호화 모듈 비활성화

진행 과정

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

 키스토어 생성

- 본 과정은, 인증서 신청서 작성시 CSR 자동생성 이용을 권장합니다. ".pfx / .jks / .key" 파일이 제공됩니다.
- 제공되는 ".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) 생성

본 과정은, 인증서 신청시 CSR 자동생성 이용을 권장합니다
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 예제

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

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

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

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

* 개인키가 CSR 생성 서버에만 - CSR 직접 생성 - 존재하는 경우에, 개인키에 발급된 서버/체인/루트 통합합니다.
* 루트/체인 인증서는 상품별로 차이가 있으므로, 발급 완료시 첨부된 파일 내역에서 확인 가능합니다.
* CSR 자동생성 신청의 경우, .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. AddTrustExternalCARoot.crt
/>

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

 설치 적용 확인 및 변환

* 서버에 SSL 설정 적용 후, 웹서버 재시작시 경고 또는 에러가 있는지 웹서버 콘솔 로그를 필히 확인해야 합니다 .

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


반응형

'개발 > WEB' 카테고리의 다른 글

나만 모르고 있던 - HTTP/2  (0) 2018.10.23
jquery validation  (2) 2017.12.27
Spring security 실패처리  (0) 2017.11.23
[번역] 하루만에 끝내는 AngularJS  (0) 2017.08.09
Angular.js는 왜 좋은가?  (0) 2017.08.02