Spring/Spring Boot

[ Spring Boot] 무료 SSL 인증서로 SSL(https) 통신하기

은쑥이 2021. 6. 4. 17:11

REST API 서버나 웹서버 등 서버 개발시 일반적으로 가장 간단하고 빠르게 적용할 수 있는 보안이 SSL 통신이지 않을까요?

SSL에 대해 조금이라도 알고있는 사람이라면 충분히 SSL통신을 복호화할 수 있겠지만, SSL 복호화라는 귀찮은 절차를 하나 추가해줄 수 있으니 스프링부트 프로젝트에 SSL 통신을 추가해보도록 하겠습니다.

 

실제 운영서버에 적용할 것이 아니기 때문에 Let's Encrypt에서 무료 인증서를 발급받아 적용해보도록 하겠습니다

 

00. 실행환경

CentOS7
Certbot v1.11.0
Spring Boot v2.4.4 & project SDK v1.8
Java 8

실행환경은 상위와 같습니다.

 

01. Certbot 설치

$ yum install certbot certbot-nginx

 

02. 인증서 발급

$ certbot certonly --webroot -w /var/www/html -d 도메인주소

 

03. 인증서 확인

$ certbot certificates

인증서가 정상적으로 발급됬다면 /etc/letsencrypt/archive에 도메인명으로 폴더가 생성됩니다. 

해당 폴더 내 파일 이름을 아래와 같이 수정해주세요(숫자 1 제거)

- privkey.pem

- fullchain.pem

- cert.pem

- chain.pem

 

04. PKCS12로 변환

$ openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out cert_and_key.p12 -name ttp -CAfile chain.pem -caname root

cert_and_key.p12파일이 생성되면 스프링부트_프로젝트명/src/main/resources에 넣어줍니다. 

keystore.p12로 파일명을 변경하였습니다.

 

05. application.properties 설정

server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-type=PKCS12
server.ssl.key-store-password=password

패스워드는 PKCS12 파일을 생성할 때 사용한 패스워드를 넣어주시면됩니다. 

컴파일 후 정상적으로 Https(SSL) 통신이 수행되는 것을 확인할 수 있습니다.