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

사전 구성 환경

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

개인키 및 CSR 생성

⦁ SSL 인증서 발급 신청시, CSR 입력 단계에서 "CSR 자동생성" 선택시 수작업 생성 과정은 필요가 없습니다. (자동 이용 권장)
 ⦁ CSR 자동 발급 완료시, "개인키 / 서버인증서 / 체인인증서 / 루트인증서" 의 pem(crt,key), pfx, jks, p7b 파일이 첨부 제공됩니다.


- FAQ : 개인키(private key) 생성/보관 관련 참고 사항
- FAQ : SSL 발급 신청시 CSR 생성 관련 참고 사항
- FAQ : SSL 발급 신청시 도메인 형식 예제 및 참고 사항

※ 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)에 인증서 파일이 포함되어 있습니다.
- 서버 적용에 필요한 파일 정보는, zip 파일내 '발급내역서 및 루트/체인' PDF 에서 확인해야 합니다. (필수)
- 이후 과정 부터는, 서버에 SSL 인증서 설치/적용/확인 절차 입니다. (인터넷에 공개된 설정법과 차이 없음)
- 직접 설치/적용에 어려움이 있다면, 서버운영 전문업체 기술지원도 검토해 보시기 바랍니다 유료기술지원 확인하기

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

- SSL 인증서 발급 신청시, "CSR 자동생성" 발급 완료는 .jks / .pfx 파일도 첨부 제공하므로, 아래 조합 과정은 불필요합니다.
  • keytool -import -trustcacerts -alias AAARoot -file AAACertificateServices.Root.crt.pem -keystore sslcert.co.kr.jks
  • keytool -import -trustcacerts -alias USERTrustCA -file USERTrustRSACA.Chain1.crt.pem -keystore sslcert.co.kr.jks
  • keytool -import -trustcacerts -alias SectigoCA -file SectigoRSADVCA.Chain2.crt.pem -keystore sslcert.co.kr.jks
  • keytool -import -trustcacerts -alias SecureSign -file www.sslcert.co.kr.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 2023. All rights reserved.