출처: 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 등 국제 보안 기구에서 해제를 권장하는 취약한 암호화 모듈 비활성화
진행 과정
- 키스토어 생성
- CSR(Certificate Signing Request) 생성
- 인증서 발급 신청 제출
- 인증서 설치 적용
- 정상 적용 완료 테스트
키스토어 생성
- 제공되는 ".pfx / .jks" 에는 "개인키+서버인증서+체인인증서+루트인증서" 가 모두 통합되어 있습니다.
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) 생성
SecureSign
-keyalg RSA -sigalg SHA256withRSA -file SecureSign.csr
-keystore domain.jks
- -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-----
까지 포함하여 내용 전체를 복사하여 신청서에 입력합니다. (----- 를 누락하거나, 새로운 빈출이 추가되지 않도록 주의하세요)
인증서 발급 신청
서버 인증서 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 조합 후)
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 자동 생성 이용시)
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 직접 적용
scheme="https" secure="true" sslProtocol="TLS" SSLEngine="on"
SSLPassword=
"개인키 암호"
(*CSR 수동 생성시에 설정 또는 인증서 변환 매뉴얼 참조)SSLCertificateKeyFile=/인증서파일경로/
개인키
ex. domain_xxxxx.key.pemSSLCertificateFile=/인증서파일경로/
서버인증서
ex. domain_xxxxx.crt.pemSSLCertificateChainFile=/인증서파일경로/
체인인증서
ex. chain-bundle.pemSSLCACertificateFile=/인증서파일경로/
루트인증서
ex. AddTrustExternalCARoot.crt* 루트/체인 인증서는 상품별로 차이가 있으므로, 발급 완료시 첨부된 파일 내역에서 확인 가능합니다.
* AprLifecycleListener 리스너 구성 및 SSLEngine 활성화가 되어 있는지 미리 확인하시기 바랍니다.
* CSR 자동 생성 이용시, 개인키에는 패스워드가 지정되지 않습니다. (별도 지정 필요시 변환 매뉴얼 참조)
* 예제 xml 에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 서버 설정값을 사용하시기 바랍니다.
설치 적용 확인 및 변환
* 서버에 SSL 설정 적용 후, 웹서버 재시작시 경고 또는 에러가 있는지 웹서버 콘솔 로그를 필히 확인해야 합니다 .
SSL 설치/적용 트러블슈팅 SSL 설치 적용 확인 하기 체인인증서 적용 확인 방법 인증서 포맷 변환 방법 TrustLogo 적용 방법관련 주요 이슈 사항
- Tomcat 에서 SNI 방식 SSL 인증서 Server.xml 설정 예
- SSL 인증서 적용시, 서버 이름 표시 (SNI) 지원 서버 및 클라이언트
- 서버에 보안이 약한 임시 Diffie-Hellman 공개 키가 있습니다
- 연결이 비공개로 설정되어 있지않습니다
- ERR_SSL_VERSION_OR_CIPHER_MISMATCH
- 페이지에 안전하지 않은 다른 리소스, 혼합된 콘텐츠 차단, 자물쇠 표시 없음
- Apache, NginX 등 웹서버 SSL Cipher Suite 권장 값
- OpenSSLContext.init Error initializing SSL context 오류
- Alias name tomcat does not identify a key entry 오류
- SSLCertificateFile must be defined when using SSL with APR 오류
'개발 > 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 |