Java 개발 환경에서 keytool로 인증서 및 신뢰 저장소 생성하고 Spring Boot에서 인증서 신뢰하기

Java 개발 환경에서 사용자 정의 인증서를 생성하고 이 인증서를 신뢰하는 방법을 설명합니다.

JKS 방식 예제

  1. 인증서 생성

다음 명령어로 키 쌍과 자체 서명 인증서를 생성합니다. 모든 사용자 정의 값은 영문으로 설정하세요.

keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -storetype JKS -keystore mykeystore.keystore -validity 365 -ext SAN=dns:myapp.example.com,ip:192.168.1.100

명령 실행 후 비밀번호와 조직 정보를 입력합니다.

키 저장소 비밀번호 입력: changeit
새 비밀번호 재입력: changeit
이름과 성은 무엇입니까?
  [Unknown]:  myapp.example.com
조직 단위 이름은 무엇입니까?
  [Unknown]:  DevTeam
조직 이름은 무엇입니까?
  [Unknown]:  MyCompany
구/군/시 이름은 무엇입니까?
  [Unknown]:  Seoul
시/도 이름은 무엇입니까?
  [Unknown]:  Seoul
국가 코드(두 글자)는 무엇입니까?
  [Unknown]:  KR
CN=myapp.example.com, OU=DevTeam, O=MyCompany, L=Seoul, ST=Seoul, C=KR이(가) 맞습니까?
  [아니오]:  예

<myalias>의 키 비밀번호 입력
        (키 저장소 비밀번호와 동일한 경우 Enter)
  Enter
  1. 인증서 파일(.cer) 내보내기
keytool -export -alias myalias -keystore mykeystore.keystore -file mycert.cer
키 저장소 비밀번호 입력: changeit
파일 <mycert.cer>에 저장된 인증서
  1. 신뢰 저장소(TrustStore) 생성

내보낸 인증서를 신뢰 저장소로 가져옵니다.

keytool -import -alias myalias -file mycert.cer -keystore truststore.jks -storepass truststorepwd
이 인증서를 신뢰하시겠습니까? [아니오]:  예
인증서가 키 저장소에 추가되었습니다.
  1. Spring Boot 애플리케이션 설정

src/main/resources 폴더에 mykeystore.keystore 파일을 넣습니다. application.yml 또는 application.properties에 다음 설정을 추가합니다.

server:
  port: 8443
  ssl:
    enabled: true
    key-store: classpath:mykeystore.keystore
    key-store-password: changeit
    key-store-type: JKS
    key-alias: myalias
    key-password: changeit

실행 시 JVM 인수로 신뢰 저장소를 지정합니다.

-Djavax.net.ssl.trustStore=truststore.jks -Djavax.net.ssl.trustStorePassword=truststorepwd

PKCS12 방식 예제

  1. PKCS12 인증서 생성

한 줄 명령어로 모든 정보를 포함하여 생성할 수 있습니다.

keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore mycert.p12 -validity 365 -storepass p12password -keypass p12password -dname "CN=myapp.example.com, OU=DevTeam, O=MyCompany, L=Seoul, ST=Seoul, C=KR" -ext "SAN=dns:myapp.example.com,ip:192.168.1.100"
  1. 공개 키 인증서(CER) 내보내기
keytool -export -alias myalias -keystore mycert.p12 -storetype PKCS12 -file mycert.cer
키 저장소 비밀번호 입력: p12password
파일 <mycert.cer>에 저장된 인증서
  1. 신뢰 저장소 생성 (JKS 형식으로)
keytool -import -alias myalias -file mycert.cer -keystore truststore.jks -storepass truststorepwd
이 인증서를 신뢰하시겠습니까? [아니오]:  예
인증서가 키 저장소에 추가되었습니다.

이후 Spring Boot 설정은 JKS 방식과 동일합니다. PKCS12 파일을 키 저장소로 사용할 경우 key-store-typePKCS12로 변경하고 비밀번호를 일치시키면 됩니다.

태그: keytool JKS PKCS12 SSL Spring Boot

8월 17일 13:57에 게시됨