Light Blue Pointer
본문 바로가기
TIL(Develop)/Spring

Spring 프로젝트 HTTP에서 HTTPS로 변경하기 (Java로 SSL 만들어서 Spring 프로젝트에 적용하기(P12 방식))

by 개발바닥곰발바닥!!! 2024. 4. 17.

Spring 프로젝트를 http에서 https로 만들기 위해서 SSL을 발급받아서 추가하는 방법을 설명하려고 한다

 

인텔리제이 cmd가 먹히지 않아서

Windows cmd prompt로 했다

관리자 모드로 열어주지 않으면 아래와 같은 에러가 발생한다

keytool error: java.io.FileNotFoundException: keystore.p12 (Access is denied)

jdk bin으로 이동하면 keytool이 있어서 jdk bin으로 이동해준다

C:\\Program Files\\Java\\jdk-17\\bin>

Keystore + 키 쌍 생성

keytool -genkey -alias {keystore name} -keyalg RSA -storetype PKCS12 -keystore {keystore file name}.p12

예시

keytool -genkey -alias minstore -keyalg RSA -storetype PKCS12 -keystore minstore.p12

출력

keytool -genkey -alias minstore -keyalg RSA -storetype PKCS12 -keystore minstore.p12
generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 90 days
        for: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown

Unknown으로 설정되어 있는데 그냥 엔터치고 넘어가서 마지막에 [no]냐고 물어보면 y를 입력해준다

키 쌍이 존재하는지 확인하는 방법

keytool -list -keystore {keystore name}.p12 -storetype PKCS12 -storepass {password}

예시

keytool -list -keystore src/main/resources/minstore.p12 -storetype PKCS12 -storepass 58155815

출력

키가 생성되었다면 entry의 개수가 1이다

Your keystore contains 1 entry

keystore에서 인증서 추출하기

keytool -export -keystore {keystore file name}.p12 -alias {keystore name} -file {certification file name}.crt

예시

keytool -export -keystore minstore.p12 -alias minstore -file myCertificate.crt

출력

C:\\Program Files\\Java\\jdk-17\\bin>keytool -export -keystore minstore.p12 -alias minstore -file myCertificate.crt
Enter keystore password:
Certificate stored in file <myCertificate.crt>

jdk bin 경로에 가서 keystore파일과 certificate 파일을 가져와서 resources에 넣어준다

C:\\Program Files\\Java\\jdk-17\\bin>

프로젝트에 인증서 적용하기

application.yml에 다음과 같이 설정해준다

server:
  ssl:
    key-store: path/to/{keystore name}.p12
    key-store-password: {keystore password}
    key-store-type: PKCS12
    key-alias: {certificate name}
    key-password: {certificate password}
  port: 8443

예시

server:
  ssl:
    key-store: path/to/minstore.p12
    key-store-password: 58155815
    key-store-type: PKCS12
    key-alias: myCertificate
    key-password: 58155815
  port: 8443

port 번호는 바꿔도 무방하다