Certbot 에서는 쉽고 빠르게 인증서 발급을 할 수 있도록 클라이언트를 제공하고 있습니다. 이 블로그도 Let's Encrypt의 Certbot으로 인증된 인증서를 사용하고 있습니다.

Certbot 사이트에 들어가면 다음과 같은 화면이 반겨줍니다.
Certbot 홈페이지

중간 Select Box에서 Nginx 와 Ubuntu 17.04를 선택하시면 설치방법이 나옵니다. 꽤 다양한 환경을 지원하고 있습니다.

다음 Installation 화면에 나온 방법을 저만의 방법으로 쉽게 써보았습니다.

먼저, Certbot 을 설치합니다.

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot  // certbot을 설치합니다.

인증서 생성 전, nginx를 종료합니다.

$ sudo service nginx stop  // 443 포트가 사용중이면 오류가 발생하니 nginx를 종료합니다.
$ cd && mkdir certbot && cd ./certbot  // 사용자 홈 디렉토리에 certbot 이라는 폴더를 생성합니다.

(필) -w 으로 webRoot를 지정합니다.
(필) -d 으로 인증서를 적용할 도메인(DNS) 를 지정합니다.
(선) --standalone 으로 standalone 모드를 설정 할 수 있습니다.
(선) --work-dir 으로 작업 디렉토리를 설정 할 수 있습니다.
(선) --logs-dir 으로 로그를 남길 디렉토리를 설정 할 수 있습니다.
(선) --config-dir 으로 설정파일을 남길 디렉토리를 지정 할 수 있습니다.

더 많은 명령어는 man certbot 을 참고하세요.

인증서를 설치합니다.

$ certbot certonly --standalone -w [webRoot] -d [DomainName] --work-dir [workDir] --logs-dir [logDir] --config-dir [confDir]

--work-dir, --logs-dir, --config-dir 을 생략하고 진행할 수 있으나, 권한 문제가 발생할 수 있습니다. 기본 디렉토리는 다음과 같습니다.

--config-dir : /etc/letsencrypt
--work-dir   : /var/lib/letsencrypt
--logs-dir   : /var/log/letsencrypt

Let's Encrypt 인증서는 만료일이 3개월이기 때문에 Crontab 을 이용하여 3개월 마다 인증서를 갱신합니다.

$ sudo crontab -e  // root 계정의 crontab을 설정합니다.

crontab 최하단에 다음과 같이 추가합니다.

0 0 1 */3 * certbot renew --config-dir [confDir] --logs-dir [logDir] --work-dir [workDir]
0 0 1 */3 * service nginx reload

0 0 1 */3 * 의 뜻은 [3,6,9,12]월 1일의 0시 0분에 다음 명령어를 진행하라는 뜻입니다.

이렇게 설정된 인증서를 nginx에 적용하시면 인증서 설치가 완료됩니다. 모르는 부분은 댓글 주시면 빠르게 답변 드리겠습니다~