본문 바로가기
Projects/푸하하 - 개인 프로젝트

SSL인증서 발급 받기 (Let's encrypt, certbot, ubuntu, ec2, spring boot)

by 우인입니다 2023. 11. 9.

https://thiswooin.tistory.com/115

SSL인증서를 발급 받기 위해 도메인을 구매하고 이를 설정까지 마쳤다.

SSL인증서를 발급받고, 

 


SSL? CA?

SSL 인증서는 아무데서나 발급해주지 않는다.

CA라고 불리는 인증기관이 있는데 여기서 발급받을 수 있다.

 

https프로토콜의 과정 자체가 비대칭키를 활용하여 암호화와 복호화를 이루어내는데,

이 때 사용되는 비대칭키를 포함하여 안정성 있게 구현할 수 있는 회사가 선정된다고 한다.

그리고 우리가 쓰는 클라이언트에 이 인증기관들의 인증서에 대한 정보를 갖고 있다.

 

Let's encrypt? Certbot?

Let's encrypt는 CA 중에서 비영리 목적으로 무료로 인증서를 발급해주는 기관이다.

하지만 3개월마다 갱신을 해줘야하는 번거로움이 있다.

이를 자동갱신 해주는 오픈소스가 Certbot인 것이다.

즉, Certbot을 사용하면 Let's enctypt의 인증서를 발급받는 것이다.

 

 


EC2 인스턴스에서 Certbot으로 SSL 발급 받기

작업환경

현재 EC2에 백엔드서버를 Ubuntu 22.04 환경으로 띄워뒀다.

Spring boot로 빌드된 jar 파일을 업로드 해두었고, 이를 실행시키기 위해 openjdk-17을 설치해뒀다.

 

Spring Boot로 작업했으니까 apache?

https://certbot.eff.org/

certbot 홈페이지에 자세한 인스트럭션이 있긴하다.

우선 Springboot의 내장톰캣으로 배포를 하고 있어서 apache와 ubuntu를 골랐다.

 

하지만 이 부분에서 바보같이 시간을 낭비했다.

ec2에는 apache가 깔려있는 게 아니라, 내장 톰캣으로 실행되는 jar파일이 있는 것이다.

같은 맥락으로 윈도우 로컬 환경에서 도메인만 입력해서 인증서를 발급 받을 수 없다.

(도메인의 끝에 윈도우가 있어야 그에 맞는 응답을 해주는 데)

 

EC2인스턴스를 띄우긴 했지만 jar파일을 실행하지도 않았어서 certbot으로 부터 오는 fetching 작업에 응답이 불가능했다.

지금보면 너무 당연한데, 구글링을 통해 따라만 하다보니 눈이 가려졌다.

 

Certbot으로 SSL발급받기

  1. nginx설치
  2. snapd 설치
  3. certbot 설치
  4. nginx를 이용해 SSL 인증서 받기
  5. 자동갱신 테스트

https://certbot.eff.org/instructions?ws=nginx&os=ubuntufocal

위의 링크에서 가이드를 참고하며 순서를 가져갔다.

 

아래는 certbot renew --dry-run 명령어로 자동갱신 테스트다.

참고로 sudo로 실행하지 않았을 때, 짧은 시련이 왔었다.

 

내장톰캣이 있는 jar파일을 실행시키고 apache로 인증해보는 것도 시도해 봐야겠다.

 

 

 

참고링크

 

https://ppaksang.tistory.com/14

https://jiwontip.tistory.com/83