[Spring Boot] ssl 인증서 적용 및 발급(Let's Encrypt )
ssl 인증서 발급 방법.
1) Let's Encrypt
SSL : CA(Certificate Authority, 인증기관)에서 유료로 발급해주는 인증서로 보안연결(https)을 가능하게 한다.
https의 보급을 위해 mozilla, cisco, chrome, meta, aws 등 다양한 기관에서 후원을 해 2016년에 Let's Encrypt 라는 이름의 무료 인증기관이 생겼다. - https://letsencrypt.org/
그러나 이 무료 인증기관은 한 가지 단점이 있는데, 3개월마다 SSL을 갱신해야한다.
Certbot은 3개월마다 갱신해야하는 번거로움을 자동화해주는 오픈소스이며,
Let's Encryt에서도 이 방식을 추천한다.
2) Certbot 설치 / SSL 발급
- 서버 OS : Centos7 환경 기준, 다른 OS의 경우
https://certbot.eff.org/instructions 에서 상세 방법을 찾아볼 수 있다.
// snap 설치를 위한 라이브러리 설치
sudo yum update
sudo yum install epel-release
// snap설치
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
-------------------------------------
//snap을 통한 certbot 설치
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
- 2가지 방법이 있다. (standalone : 서버 재시작 필요 / webroot : 서버 재시작 불필요)
sudo certbot certonly --standalone
- 아래와 같은 log 출력 후 ssl 인증서가 발급된다
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/subbak2.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/subbak2.com/privkey.pem
Spring Boot에 인증서를 적용하기 위해서는 해당 파일을 PKCS12 또는 JKS로 변환을 해야함.
이번 가이드에서는 PKCS12를 기준으로 설명.
pem 파일 경로에서 다음과 같은 명령 실행
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name tomcat -CAfile chain.pem -caname root
application.yml - ssl 적용 방법
server:
ssl:
enabled: true
key-store: classpath: 파일명
key-store-password:대상 키 저장소 비밀번호
key-store-type: key-store 파일의 타입 # JKS / PKCS12 ...
key-alias: alias #SSL 키 스토어(keystore)에서 사용할 키 엔트리의 별칭(alias)을 지정하는 데 사용됩니다.
작업 이 후 key-store 옵션의 입력값 위치에 ssl 파일 배치