DSM 5.x 또는 그 이하 버전에서 Lets’ Encrypt SSL 인증서를 발급받고 자동 갱신하는 방법을 설명합니다.

SSL 인증서 적용

참고로 DSM 6.0부터는 DSM 자체에 Lets’ Encrypt SSL 인증서를 발급받고 갱신하는 기능이 포함되어 있습니다.

공식 제공하는 Let’s Encrypt 클라이언트는 DSM 5.x에서는 정상 동작하지 않습니다. 그래서 다른 시스템을 이용하여 발급받아야 되는데요.. Lets’ Encrypt 인증서의 유효 기간이 90일이라서 만료 기간에 맞추어 인증서를 갱신하고 나스에 복사하는 작업이 쉽지 않습니다.

이 팁을 따라 하면 최초 한 번만 설치해두면 이후 자동으로 인증서를 갱신해줍니다.

∗ 2018년부터 와일드카드 인증서를 지원합니다. 아래 글을 참고바랍니다.

https://isulnara.com/wp/archives/1581

1. 준비사항

 

  • Bootstrap – 여기서는 따로 설명하지 않겠습니다. 검색하여 각 모델에 맞는 거로 직접 설치 바랍니다.
  • Telnet or SSH 활성화 – DSM 관리자 페이지에서 활성화합니다.
  • 인증서를 발급받고자 하는 도메인(서브 도메인 포함)으로 웹 접속했을 때 나스로 연결되어야 됩니다. (웹브라우저로 http://도메인 으로  접속했을 때 나스의 웹서비스로 연결되어야 됩니다.)

 

 

2. 각종 툴/라이브러리 설치

 

TELNET이나 SSH 클라이언트로 터미널에 root 사용자로 접속하여 아래 명령을 내립니다.

 

 

3. dehydrated 설치

 

여기서는 /volume1/system 폴더에 설치합니다. 각자 원하는 폴더에 설치하면 됩니다.

 

 

4. 도메인 설정

 

domains.txt를 아래와 같이 생성합니다.

각 도메인은 한 줄에 하나씩 입력합니다. 서브 도메인은 한 줄에 공백(스페이스)으로 구분하여 입력합니다.

 

 

 

5. 웹서버 설정

 

/etc/httpd/conf/extra/dehydrated.conf 파일을 아래와 같은 내용으로 생성합니다.

 

그리고, /etc/httpd/conf/httpd.conf-user 파일의 제일 끝에 아래와 같이 추가합니다.

 

DSM 관리자 페이지에서 웹 서비스를 재시작하거나 아래 명령으로 재시작합니다.

 

 

6. 인증서 발급

 

아래 명령으로 인증서를 발급받습니다.

 

이제 인증서가 “certs/도메인” 폴더에 생성되었습니다.

 

아파치(apache) 가상호스트 설정 파일에 인증서 적용

/etc/httpd/sites-enabled-user/httpd-ssl-vhost.conf-user에 아래와 같이 설정합니다. (도메인은 자신의 환경에 맞게 변경)

DSM 관리자 페이지에서 웹 서비스를 재시작하거나 아래 명령으로 재시작합니다.

 

HAProxy 설정에 인증서 적용

아래 과정은 HAProxy에 SSL 인증서를 적용하기 위한 과정으로 아파치를 위한 설정에서는 필요치 않습니다.

아래 명령으로 fullchain.pem(server cert + intermediates) 파일과 privkey.pem 파일을 하나로 만들어 줍니다.

Frontends의 https 설정 중 Binds를 아래와 같이 수정합니다.

HAProxy 설정

 

 

7. 자동 갱신 설정

 

아래와 같이 /volume1/system/dehydrated/renew_certs.sh 파일을 만들어 줍니다. (DEHYDRATED_PATH와 DOMAIN은 자신의 환경에 맞게 수정)

 

아래 명령을 내려 실행 권한을 주고, 실제 동작하는지 확인합니다.

위와 같이 30일 이상 남았다고 갱신을 중단한다는 메시지가 보이면 제대로 동작하는 것입니다.

 

 

작업 스케줄러 등록

이제 DSM 관리자 페이지의 작업 스케줄러에 아래와 같이 등록하면 됩니다.
작업스케줄러-일반

실행 명령에는 사용자 정의 스크립트 /volume1/system/dehydrated/renew_certs.sh를 입력하고,

작업스케줄러-스케줄

스케줄 설정은 “일요일”마다 실행되게 설정하였습니다. 위에서 만든 renew_certs.sh를 실행하면 인증서 만료 기간이 30일 이상 남았다고 나오고 중지되는 것이 보여 스케줄 주기는 30일 이내로 설정하였습니다.

 

이제 모든 설정이 끝났습니다.

 

* 본문 중 /volume1/system과 mydomain.com은 각자의 환경에 맞게 수정하여 사용하기 바랍니다.

* 작업 스케줄러에 의한 갱신은 인증서가 아직 만료 기간이 되지 않아서 제대로 동작하는지 확인하지 못하였습니다. 나중에 댓글로 동작 여부를 남기도록 하겠습니다. 이 팁을 적용하신 분들께서는 동작 여부를 댓글로 알려주시면 고맙겠습니다.