SSL 인증서 발급 — Let’s encrypt

woo94
dev-woo94
Published in
3 min readMay 5, 2024

Intro

Celetrip 서버는 EC2 + docker의 조합으로 서버를 운영하고 있습니다. 최근 SSL 인증서 문제가 발생해서 조치를 해야했지만 시간이 없어 우선은 EC2에서 제공해주는 public dns 주소를 사용하고 있었습니다. 이 주소는 https 접속이 가능한 주소는 아니지만 앱 서버를 개발하는데 지장이 없어 사용중이었습니다.

하지만 웹에 제공해주는 API에서 문제를 일으켰습니다. 우리 팀은 Vercel을 통한 웹 배포를 사용하고 있었는데, Mixed-content 에러가 발생했습니다. API 통신을 하는 서버가 https 가 아니기 때문에 Vercel을 통해서 배포된 웹에서 요청을 보내지도 않고 거절하는 것이었습니다. 이 문제를 빠르게 해결하기 위해 Google Cloud Run 서비스를 이용해서 우회했습니다.

이제 급하게 준비했던 행사가 끝났으니 인증서 문제를 해결해보기로 했습니다.

인증서 옵션

  • 인증서를 구매
  • self-signed certificate
  • Let’s encrypt

위에 나열한 옵션들을 살펴 보겠습니다.

인증서를 구매

저는 서브도메인의 사용을 좋아합니다. 서비스 영역을 서브도메인으로 가시적으로 분류한다는 점이 매력적이고, 더 나아가 네트워크적으로 분리하기 수월하다는 점이 있기 때문입니다.

서브도메인을 자주 사용한다면 Wildcard SSL certificate를 구매하는 것이 좋습니다. 하나의 SSL certificate로 다른 모든 서브도메인들의 인증서 역할을 해줄수 있기 때문입니다.

인증서를 비교적 저렴하게 구매할 수 있는 GoGetSSL에서 다음의 가격으로 Wildcard 인증서를 구매 할 수 있습니다. 1년 기준 12만원을 넘게 내야 하는군요 😓 시스템 운영 비용을 낮추는 것도 개발자가 갖춰야할 덕목이라고 생각하기 때문에 다음 선택지를 보겠습니다.

Self-signed certificate

Openssl을 통해서 self-signed certificate를 생성하고 적용 할 수 있습니다.

하지만 일반적으로 브라우저나 클라이언트에게 신뢰되지 않습니다. 사용자는 보안 경고 문구를 볼 수 있으며 이것은 사이트의 신뢰성을 낮추는 결과로 이어집니다.

또한, 외부 인증기관의 검증 과정이 없기 때문에 보안 문제가 쉽게 발생 할 수 있습니다.

개인 개발 환경에서나 사용 가능한 선택지라고 생각합니다.

Let’s encrypt

Let’s encrypt는 ISRG(Internet Security Research Group)이라는 비영리 단체에서 운영하는 인증 기관(CA) 입니다.

누구나 손쉽게 인터넷 보안을 이행할 수 있게 함으로써 웹 전체의 보안을 강화 하는 것을 주요 목표로 둔 단체입니다. 인증서 비용이 인증서 사용의 장벽이 되는 것을 방지하기 위해 무료로 이것을 제공해주며 자동화된 프로세스를 통해서 인증서의 관리와 갱신을 자동화 해줍니다.

좋은 선택지 입니다.

--

--