Spring boot SSL 인증서 적용하기

최봉진·2022년 6월 8일
1

요즘 웹사이트는 기본적으로 HTTPS를 바탕으로 동작한다. HTTPS의 S는 secure을 나타내는 약자로 HTTP통신을 통해 주고받는 데이터를 암호화 하는 것을 말한다. 즉, 안전한 사이트라는 걸 인증하기 위해선 HTTPS를 적용시켜야 한다.

그렇다면 HTTPS를 적용시키기 위한 방법을 살펴보자.

1. 필요성

SSL 인증서 없이 웹 어플리케이션을 서버에 올리면 http로 접속이 되고 아래와 같은 경고가 나타난다.

"주의요함"

접속은 가능하지만 무언가 찝찝한 느낌이 든다. 따라서 우리는 보안을 위해 HTTPS를 적용시켜 볼 것이다.

웹 어플리케이션에 SSL 인증서를 적용하면 보안연결(https - http Secure) 접속이 가능하다.

spring-boot에 무료 SSL 인증서 적용을 통해 보안연결을 적용해봤다.

2. Certbot을 통한 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에서도 이 방식을 추천한다.

https://certbot.eff.org/

2) Certbot 설치 / SSL 발급

  • 서버 OS : Centos7 환경 기준, 다른 OS의 경우

https://certbot.eff.org/instructions 에서 상세 방법을 찾아볼 수 있다.

① snap 설치

② snap을 통한 certbot 설치

③ certbot을 통한 SSL 발급

  • 2가지 방법이 있다. (standalone : 서버 재시작 필요 / webroot : 서버 재시작 불필요)

  • spring-boot의 경우 web app에 인증서를 포함시키는게 설정이 편해보여 standalne을 택했다.

  • 이메일 입력, 도메인 입력 등을 하고 나면 아래와 같은 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

  • 스프링부트가 아닌 다른 웹 어플리케이션을 이용한다면

발급받은 pem 파일을 통해 https 설정이 가능하다.

3. SpringBoot에 SSL 적용

1) SSL인증서를 spring boot에서 필요한 형식(PKCS12)로 변환

  • pem 파일이 위치한 경로에서 진행
  • password를 입력하라고 나오는데 원하는 password로 설정하면 된다.

2) keystore.p12 파일을 /src/main/resources에 이동

application.properties 설정 (application.yml에서 설정해도 상관없음)

3) spring-boot 빌드 후 upload

위의 과정을 거치면 좌물쇠모양의 아이콘이 url옆에 뜨는걸 확인할 수 있다.

이렇게 되면 HTTPS가 적용된 웹사이트가 완성된다.

출처 : https://subbak2.tistory.com/110

profile
개발자가 되고픈 비전공자

0개의 댓글