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

사전 구성 환경

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

Keystore 및 CSR 생성

- SSL 인증서 발급 신청서 작성시, CSR 입력 단계에서 "CSR 자동생성" 선택시 현재 과정은 필요 없습니다.
- CSR 자동생성 발급 완료시, "개인키, 서버인증서, 체인인증서, 루트인증서" 의 pem, pfx, jks 파일이 포함되어 있습니다.
- FAQ : 개인키(private key) 생성/보관 관련 참고 사항
- FAQ : SSL 발급 신청시 CSR 생성 관련 참고 사항
keytool -genkey -keyalg RSA -sigalg SHA256withRSA -alias SecureSign -keysize 2048 -keystore sslcert.co.kr.jks
keytool -certreq -alias SecureSign -keyalg RSA -sigalg SHA256withRSA -file SecureSign.csr -keystore sslcert.co.kr.jks

- CSR 직접 생성이 필요한 경우, Tomcat 매뉴얼의 Keystore/CSR 부분을 참고하세요


Single

CN : sub.example.com 처럼 FQDN 도메인 형식 이어야 합니다.

Wildcard

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

MultiDomain

CN : example.com 대표성을 가진 FQDN 도메인 1개만 입력 합니다.
SAN : 인증서에 포함될 나머지 FQDN 도메인은, 신청서 작성중 DCV 설정 단계에서 추가 입력합니다.

Multi-Wildcard

CN : example.com 대표 루트 도메인 1개을 CN으로 입력 합니다.
SAN : *.example.com 형식의 와일드카드 도메인은, 신청서 작성중 DCV 설정 단계에서 추가 입력합니다.

인증서 발급 완료

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

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

- SSL 인증서 발급 신청서 작성시, CSR 입력 단계에서 "CSR 자동생성" 선택시 현재 과정은 필요 없습니다.
  • keytool -import -trustcacerts -alias AAARoot -file AAACertificateServicesRoot.crt.pem -keystore sslcert.co.kr.jks
  • keytool -import -trustcacerts -alias USERTrustCA -file USERTrustRSACertificationAuthority.crt.pem -keystore sslcert.co.kr.jks
  • keytool -import -trustcacerts -alias SectigoCA -file SectigoRSADomainValidation.crt.pem -keystore sslcert.co.kr.jks
  • keytool -import -trustcacerts -alias SecureSign -file sslcert.co.kr_xxxxx.crt.pem -keystore sslcert.co.kr.jks
  • (예제에 사용된 옵션 값 등은 예제용이므로, 실제 해당 도메인 정보로 지정하시기 바랍니다)

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

application.properties 적용시 예제 (CSR 자동 생성 이용 또는 jks 조합 후)

Properties : /src/main/resources
server.port=8443
server.ssl.key-store="sslcert.co.kr.jks" 지정
server.ssl.key-store-password=xxxxxxx # jks 암호 지정
server.ssl.key-alias=xxxxxxx # (필요시) Alias 명 지정. CSR 자동 생성시에는 CN 명
server.ssl.trust-store= # (필요시) "sslcert.co.kr.jks" 지정. CSR 직접 생성시에는, 루트/체인 스토어 파일 지정
server.ssl.trust-store-password=xxxxxxx # (필요시) jks 암호

* 서버 운영 환경에 따라서 properties 또는 yml 에 맞게 선택 적용하면 됩니다. (예제가 절대 사항 아님)
* Tomcat 등 다른 서버와 연동되는 부분이 있다면, 해당 부분은 직접 확인하여 설정 해야 합니다.
* CN(일반이름) 과 Alias 가 다르면, Alias Property 를 별도로 지정 해주어야 합니다. (변환 매뉴얼 참조)
* CSR 자동 생성 이용시, 개인키에는 패스워드가 지정되지 않습니다. (별도 지정 필요시 변환 매뉴얼 참조)
* CSR 자동 생성 이용시, .pfx / .jks 패스워드는 발급내역서 PDF 또는 주문상세 페이지를 참조하시기 바랍니다.
* 예제에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 서버 설정값을 사용하시기 바랍니다.

application.yml 적용시 예제 (CSR 자동 생성 이용 또는 jks 조합 후)

YML : /src/main/resources
server:
  port: 8443 #SSL 사용할 포트 지정 
  ssl:
        enabled: true
        key-store: "sslcert.co.kr.jks" 또는 "sslcert.co.kr.pfx" 지정 
        key-store-type: 인증서 파일 포맷별 "JKS" 또는 "PKCS12" 지정 
        key-store-password: xxxxxxxx  # jks 또는 pfx 암호
        key-alias: xxxxx.com # (필요시) Alias 명 지정. CSR 자동 생성시에는 CN 명
        trust-store: # (필요시) "sslcert.co.kr.jks" 또는 "sslcert.co.kr.pfx" 지정. CSR 직접 생성시에는, 루트/체인 스토어 파일 지정
        trust-store-password: xxxxxxxx  # (필요시) jks 또는 pfx 암호

* 서버 운영 환경에 따라서 properties 또는 yml 에 맞게 선택 적용하면 됩니다. (예제가 절대 사항 아님)
* Tomcat 등 다른 서버와 연동되는 부분이 있다면, 해당 부분은 직접 확인하여 설정 해야 합니다.
* CN(일반이름) 과 Alias 가 다르면, Alias Property 를 별도로 지정 해주어야 합니다. (변환 매뉴얼 참조)
* CSR 자동 생성 이용시, 개인키에는 패스워드가 지정되지 않습니다. (별도 지정 필요시 변환 매뉴얼 참조)
* CSR 자동 생성 이용시, .pfx / .jks 패스워드는 발급내역서 PDF 또는 주문상세 페이지를 참조하시기 바랍니다.
* 예제에 포함되어 있지 않은 나머지 Property 는 공식 매뉴얼 또는 서버 설정값을 사용하시기 바랍니다.

설치 적용 확인

- SSL 설정 적용 후, Spring Boot 서버를 재시작하여 정상 구동이 되는지 확인이 필요합니다.

- 서버 데몬 시작시 SSL 설정 관련 오류,경고가 있는지 콘솔/데몬/이벤트 로그 확인이 필요합니다.
- 서버 로컬에서 설정한 HTTPS 포트가 활성화 되어 있는지 netstat 등으로 확인해야 합니다.
- 외부에서 HTTPS 포트 접속이 되지 않는 다면 보안설정(방화벽등) 허용을 확인해야 합니다.
- L4 분산 환경은, HTTPS 패킷을 수신하는 모든 노드 웹서버에 SSL 적용이 필요합니다.
- L7 라우팅 환경은, L7 에도 HTTPS 활성 및 SSL 인증서 설정이 필요합니다. (장비별 자체 매뉴얼 참조)

- SSL 발급 도메인 웹페이지에 https:// 링크 적용을 별도 진행해야 최종적으로 SSL 암호화가 적용됩니다. (개발자,웹디자이너)
- PC 및 스마트폰의 "Chrome / Firefox / IE / Edge" 각 웹브라우져에서 "루트,체인,SSL,TLS" 경고가 발생 하는지 확인해야 합니다.

SSL 설치/적용 트러블슈팅 SSL 설치 적용 확인 하기 체인인증서 적용 여부 확인 인증서 포맷 변환 방법
컨텐츠의 무단 전제복사 및 이메일 주소의 수집/이용을 허용하지 않습니다.
bitSyrup 2021. All rights reserved.