Spring Boot 애플리케이션에서 Self-Signed SSL 인증서를 사용해 HTTPS를 설정하는 방법에 대해 알아보겠습니다. Self-Signed SSL 인증서는 테스트 환경이나 개발 환경에서 테스트할때 쓰입니다.
Self-Signed SSL 인증서 발급 받기
Self-Signed SSL 인증서는 PKCS12(Public Key Cryprographic Standards) 와 Java KeyStore 방식을 많이 사용합니다. 둘다 비슷합니다. 다만 Java KeyStore는 자바 언어에만 국한되서 사용할 수 있습니다.
PKCS12로 발급
keytool -genkeypair -alias test -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore
test.p12 -validity 3650
JKS로 발급
keytool -genkeypair -alias test -keyalg RSA -keysize 2048
-keystore test.jks -validity 3650
저 명령어를 입력하고 나면 이름이라던가 사는 지역 등 다양하게 물어보는데 저는 로컬이라서 다 그냥 대충 답변했습니다.
대부분의 블로그 글을 보니까 PKCS12가 업계 표준이기에 PKCS12 방식을 사용하기를 권장하고 있습니다.
Spring Boot 프로젝트에 인증서 추가하기
앞서 발급 받은 인증서를 애플리케이션에 추가해줘야 쓸 수 있겠죠. Spring Boot의 경우 간단한 설정을 통해서 인증서를 바로 프로젝트에 적용시킬 수 있습니다.
제 경우에는 제가 만든 test.p12를 src/main/resources/keystore 아래에 두었습니다
그 다음으로는 application.properties 파일을 수정해주면 됩니다.
server.port=8443
server.ssl.enabled=true #Spring Security를 사용하는 경우 HTTPS 요청만 허용하도록 해주는 설정
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore/test.p12
server.ssl.key-store-password=password
server.ssl.key-alias=test
비밀번호의 경우 인증서 발급 시에 적어둔 그 비밀번호를 적어주셔야합니다.
이렇게만 해주면 http://localhost:8080 에 접근하면 Bad Request가 뜨게 됩니다.다음으로 https://localhost:8443 으로 접근하면 로컬에서 만든 인증서라서 안전하지 않다고는 뜨는데 이런 방식으로 HTTPS를 연결하면 되는구나~를 파악할 수 있습니다.
일반적으로는 공식 SSL 인증서의 경우 다 공개되어 있어서 앵간한 브라우저들은 기본적으로 알고 있는데 로컬에서 만든건 인지하지 못해서 뜨는 현상입니다. 실제 운영에서는 공인된 인증서를 발급받아서 사용하시면 됩니다.
'web > spring&spring boot' 카테고리의 다른 글
[Spring boot] 포트 변경 방법 (0) | 2024.02.28 |
---|---|
[Spring] Mybatis의 snake case를 camel case로 자동 변환하기 (0) | 2024.01.27 |
API 호출을 위한 RestTemplate, WebClient 및 Feign 비교 (0) | 2023.05.11 |
[Spring Boot] @Component에 대한 이해 (0) | 2023.04.03 |
[Spring Batch] Spring Batch의 장점 (0) | 2022.02.26 |