Certbot 으로 NGINX 에 SSL 적용하기

Hong Young-Min
3 min readDec 30, 2023

--

항상 조직내 담당자들이 해 오던 일인데, 아르바이트로 만든 사이트에 SSL 을 적용할 필요가 있어서 직접 하게 되었다.
인터넷에 널리고 널린게 Let’s Encrypt 에서 무료로 발급된 SSL 인증서를 nginx 에 적용하는 글이라 보면서 하면 간단하게 되겠지 싶어 호기를 부린건데, 막상 해 보니까 좌절과 삽질의 반복이었다. ㅠㅠ

먼저 내가 구성한 환경은 다음과 같다.

SSL 적용전에는 공인 IP 로 접근하니까 심플하게 포트로 구분했었다. SSL 적용을 위해 api.co.kr 를 hapi 에 연결하는 구조로 변경했다.

나를 혼란스럽게 만드는 정보는 2가지 였다.

  1. www 와 api 둘다 인증서를 발급받으려면 와일드카드 인증서를 써야 한다. 무료 SSL 인증서는 와일드카드가 없다.
  2. certbot 설치, 사용법 그리고 nginx 설정 방법이 글쓴 사람마다 다르다.
    특히 ubuntu 의 certbot 은 버전이 낮아서 ppa:… 를 추가해서 최신 버전을 받아야 한다는 글을 보면서 apt-get 으로 설치하라는 대부분의 정보는 신뢰할 수 없었다.

하루를 삽질하다가 결국 certbot 공홈에 들어갔는데, 하루종일 검색했던 내용과 너무 달랐고 친절하기 까지 했다.

https://certbot.eff.org/instructions

기존에 설치된 certbot 모두 제거하고 snap 으로 certbot 설치를 완료 했다.
두근거리는 마음에 sudo certbot --nginx 을 실행했다.

기본 도메인 발급에 성공하면 nginx 설정을 읽어서 api, www 각각의 인증서를 자동 생성하고 /etc/nginx/nginx.conf 파일까지 수정해 줬다. 내가 할 일은 nginx restart 뿐이였다. !

와일드카드 인증서 필요 없고, apt 로 장황하게 여러 패키지 설치할 필요도 없고, 각각의 호스트 붙여서 SSL 인증서 발급 받을 필요도 없다. 단지 DNS 설정 완료하고 80 포트로 서비스가 잘 되기만 하면 나머지는 certbot 이 다 알아서 해 준다. !!

영어 울렁증 때문에 한글로 된 자료만 하루종일 눈이 빠져라 검색한 모든 것이 한마디로 개병신짓 이었다.

인터넷에 넘치는 certbot 사용방법은 모두 옛날 정보 이며, 현재 시점에서 문제가 발생하는 경우도 있습니다. 수동으로 SSL 인증서 등록 방법이 설명된 글이 많은데, nginx 설정을 찾아 보니까 관련된 옵션이 많고, 성능과 연관되서 환경에 맞게 조정할 부분도 있었습니다.
사실 성능 관련된 정보가 중요한 건데, 수동으로 등록하는 방법을 소개하하는 한글로 된 글 중에 이 내용을 제대로 설명하는 글은 아직 못찾았습니다.

certbot 으로 SSL 인증서 받으려는 분들은 구글링 그만 하시고 cerbot 공식 홈페이지에 먼저 들어가시길 바라는 마음에 포스팅 합니다.

--

--

Hong Young-Min

I am in charge of UI planning and development of Hybris Backoffice improvement project for Samsung electroinc in SAP Korea.