TRUENAS 의 Jail 에 설치한 Reverse Proxy 에 SSL 적용하기

리버스 프록시는 여러모로 좋다. 보안도 튼튼해지고, 로드 밸런싱도 되고, SSL 설정도 간편해진다. 거의 무안단물급. 물론, 노드가 하나 더 생기는 셈이니 그만큼 자원은 더 먹겠지만…

Certbot 을 설치해서 Let’s Encrypt 인증서를 설치한다. 리버스 프록시 서버에만 SSL 을 적용하면, 그 밑에 물려있는 서버는 URL 정도 말고는 신경 쓸 게 없다.

  1. Certbot 설치
  2. Let’s Encrypt 를 이용하여 인증서 받기
  3. Cron 에 자동 갱신 등록하기

Certbot 설치

sh> pkg install py-certbot

Jail 을 Base 로 설치했으면 위 명령어로 한번에 설치가 되지만, 만약 clone 으로 설치를 했다면 패키지 경로를 추가해 줘야 한다.

sh> pkg install security/py-certbot

마찬가지 요령으로 Certbot 의 nginx 플러그인도 설치한다. 상황에 맞춰 시큐리리~

sh> pkg install py-certbot-nginx

Let’s Encrypt 를 이용하여 인증서 받기

리버스 프록시를 설정할 때, 설정 파일에 한글 넣지 말라고 한 이유가 이거 때문이다. file 명령을 사용하면 각 파일의 인코딩을 볼 수 있는데, 한글을 쓰면…

sh> cd /usr/local/etc/nginx/domain
sh> file *
100_site_default.conf:      Non-ISO extended-ASCII text, with LF, NEL line terminators
101_site_calibreweb.conf:   ASCII text
102_site_gitea.conf:        ASCII text
103_site_wordpress.conf:    ASCII text
104_site_woocommerce.conf:  ASCII text
105_site_devcloud.conf:     ASCII text
sh>

저렇게 된다. nginx 는 그래도 대충 읽어내는데, certbot 는 utf-8 아니면 안된다면서 아예 안 읽는다. 그러니 ASCII 가 되도록 영어만 넣자. 그리고 실행.

sh> certbot --nginx

그냥 나오는 대로 하면 자동으로 다 된다. 잘 되면 다행인데, 중간에 빨간색 에러 메시지 나오면 잘 읽고 대응해야 한다.

아, certbot 실행하기 전에 인증서를 받을 도메인과 상관없는 파일들은 확장자를 .bak 등으로 미리 바꿔놓자. 왜냐면 해당하는 설정 파일에 SSL 이 적용되도록 전부 certbot 이 변경하는데, 괜히 휘말려서 귀찮아 질 수 있기 때문이다.

Cron 에 자동 갱신 등록하기

cron은 자동으로 어떤 작업을 실행하는 데몬이다. crontab 는 그걸 파일로 저장하게 해 주는 녀석이다.

분 시 일 월 요일 명령 순으로 입력한다. 0 4 15 * * 은 매월 15일 오전 4시를 가리키고, certbot renew 는 인증서를 갱신하라는 말이다. –renew-hook 는 갱신이 끝나면 따옴표 안의 명령어를 실행하라는 것이고, 그 명령어는 nginx 재시작이다.

0 4 15 * * /usr/local/bin/certbot renew --renew-hook "service nginx restart"

contab 을 실행하면 그냥 vi 가 실행된다.

sh> crontab -e

i 를 누르면 입력모드로 바뀐다. 위의 명령을 입력하고 ESC 누르고 : ( shift + ; ) 누르면 화면 아래, 명령을 받는 부분으로 커서가 옮겨간다. 거기서 wq 치고 엔터.

sh> crontab -l 

입력한 내용을 확인하려면 -l 옵션을 사용한다.

답글 남기기

이메일 주소는 공개되지 않습니다.