Spring Boot Https 적용(feat. Certbot)

김동영·2021년 8월 10일
0

OurMemory 프로젝트

목록 보기
6/6

0. 구성 환경

프레임워크: Spring Boot
인증 환경: CertBot / nginx -> 순수 설치(docker x)
설치 서버: EC2 Aws linux2(free tier) / 1GB RAM
로그인 계정: ec2-user

1-1. 인증서 발급

https://velog.io/@infoqoch/AWS-linux2%EC%97%90%EC%84%9C-Nginx%EB%A1%9C-Lets-Encrypt-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

1-2. 인증서 갱신

sudo certbot --nginx -d ourmemory.ddns.net(설명: domain)

https://velog.io/@infoqoch/AWS-linux2%EC%97%90%EC%84%9C-Nginx%EB%A1%9C-Lets-Encrypt-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

2. 인증서 변환

OurMemory 프로젝트(2021.01.21~)의 Spring Boot 서버에 https 를 적용하기 위해 1번 과정에서 발급받은 인증서를 .jks 파일로 변환하였다.
1) vi ~/OurMemory/ca/create_keystore.sh
2) pem 변수 값 변경(예. chain2.pem -> chain3.pem)
3) root 접속 후 스크립트 실행
4) ourmemory.jks 권한 ec2-user 로 변경

create_keystore.sh

#!/bin/bash

CERT_PEM=cert2.pem
CHAIN_PEM=chain2.pem
PRIVKEY_PEM=privkey2.pem

echo "Copy cert file"i
cp /etc/letsencrypt/archive/ourmemory.ddns.net/* .
echo "Copy ok."

echo "Convert .pem -> .p12"
openssl pkcs12 -export -in $CERT_PEM -inkey $PRIVKEY_PEM -out cert_and_key.p12 -name ttp -CAfile $CHAIN_PEM -caname root -passout pass:sld#532@kC
echo "Convert ok."

echo "Create .jks from .p12"
keytool -importkeystore -deststorepass ks0!@sdft%% -destkeypass ks0!@sdft%% -destkeystore ourmemory.jks -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -srcstorepass sld#532@kC -alias ttp
echo "Create ok."

echo "Import .jks"
keytool -import -trustcacerts -alias root -file $CHAIN_PEM -keystore ourmemory.jks -storepass ks0!@sdft%%
echo "Import ok."

echo "Remove .p12, .pem"
rm -f *.p12 *.pem
echo "Remove ok."

3. 서버 SSL 등급 확인

https://www.ssllabs.com/ssltest/analyze.html

profile
k8s, 프레임워크와 함께하는 백엔드 개발자입니다.

0개의 댓글