[백엔드][SpringBoot] SpringBoot에 SSL 인증서 적용하기

minn·2023년 5월 30일
0

프론트엔드 서버의 도메인엔 certbot을 이용해 SSL 인증서를 쉽게 발급받을 수 있었으나, 백엔드 서버는 포트를 따로 설정해놔서 그런건지 해당 포트에는 certbot으로 인증서 적용이 안되더라. 그래서 certbot으로 인증서를 발급받고 SpringBoot에서 적용하는 방법에 대해서 포스팅하고자 한다.
환경 : AWS Ubuntu 22.04 + Nginx

1. certbot 다운로드

// 1. snap 최신 버전인지 확인
$ snap install core; sudo snap refresh core
    
// 2. certbot 설치
$ snap install --classic certbot
    
// 3. 정상적으로 설치됐는지 확인 -> 명령어 입력해보기
$ ln -s /snap/bin/certbot /usr/bin/certbot

나는 다운로드 매니저로 주로 apt를 사용하는데, certbot은 snap으로 설치해야 좋다고 한다. 만약 snap이 안 깔려있다면 다운로드 ㄱ

$ sudo apt update
$ sudo apt install snapd

1-1. SSL 인증서 적용

$ certbot certonly --nginx
// 혹은
$ certbot --nginx -d [your_server_domain]

위 명령어 중 하나로 도메인에 인증서를 적용할 수 있다.
하지만 나는 서버로 사용하는 8080포트에는 이 방법으로 적용이 되지 않았다. 그래서 다음 스텝으로 넘어갔다.

2. 키 store 생성

certbot으로 인증서를 발급받으면 /etc/letsencrypt/[your_server_domain] 경로에 키파일이 저장된다. 도메인 이름으로 된 디렉토리까지 들어가서 다음 명령어로 keystore를 만든다.

$ openssl pkcs12 -export -inkey privkey.pem -in cert.pem -out keystore.p12

이 때 설정한 비밀번호는 나중에 설정 파일에 추가해줘야 하므로 기억해놓자.
그리고 해당 키store를 로컬 프로젝트 파일의 resources 폴더로 가져온다. 나는 FileZila를 이용했다.

3. application.yml 파일 설정

다음과 같이 설정해준다.

server:
  ssl:
    key-store: classpath:keystore.p12
    key-store-password: [PASSWORD]
    key-store-type: PKCS12

이렇게까지 진행한 후 빌드해서 배포해보면 https가 작동되는 걸 확인할 수 있다!

Ref. https://jiwontip.tistory.com/83

profile
Backend Developer

0개의 댓글