TIL(Develop)/Spring

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

개발바닥곰발바닥!!! 2024. 4. 17. 18:25

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 번호는 바꿔도 무방하다