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 번호는 바꿔도 무방하다
'TIL(Develop) > Spring' 카테고리의 다른 글
[Kotlin] RestClient를 MSA로 구성된 Spring module간 통신에 사용하는 예시 (0) | 2024.04.25 |
---|---|
HTTP Interface Client, (RestClient, WebClient, RestTemplate의 차이) (0) | 2024.04.25 |
Custom annotation으로 Bean Validation + Parameter Validation 하기 (어노테이션 정의해서 검증하기) (0) | 2024.03.25 |
📖Entity에 복합키로 id구성하는 방법 @IdClass, @EmbeddedId (0) | 2024.03.15 |
📖Hibernate/JPA의 id 생성 전략들 (0) | 2024.01.17 |