Using the let's encrypt for Nginx

사전 정보

  • Web Service: Nginx
  • Service port: 80(http) / 443(https)
  • letsencrypt folder: /opt/letsencrypt

인증서 얻기

Client 다운로드

인증서를 얻기 위하여 별도의 letsencyrpt 클라이언트 프로그램을 다운 받아야 한다. 해당 클라이언트는 웹서비스를 하고 있는 대상 서버에 다운을 받는다.

cd /opt
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

사용하고 있는 웹서비스 종료 후 인증서 받기

인증서를 받기 위하여 자체적으로 혹은 기존 사용하고 있는 웹서비스를 이용하여 인증서를 받는다. 여기서는 기존 서비스를 이용하지않고 클라이언트에서 자체 지원하는 standalone 방식으로 인증서를 받을 예정이다.

sudo service nginx stop

letsencrypt-auto 이용하여 인증서 얻기

./letsencrypt-auto certonly --standalone -d www.haginara.net -d cloud.haginara.net -d blog.haginara.net -d wiki.haginara.net -d kanban.haginara.net -d git.haginara.net

인증서를 받은 후에는 아래와 같은 축하 메시지를 받게 된다.

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/www.haginara.net/fullchain.pem. Your cert
   will expire on 2016-03-02. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

위 안내문에서 보듯이 /etc/letsencrypt/live 하위 폴더에 인증서가 위치하게 된다.

설정 파일 사용하여 인증서 얻기

위와 같이 파라미터를 이용하여 인증서를 받을수도 있지만 별도의 설장파일을 만들어 두고 사용 하여도된다.

cli.ini

rsa-key-size = 4096
domains = www.haginara.net, blog.haginara.net, wiki.haginara.net, git.haginara.net, git.haginara.net, cloud.haginara.net
authenticator = standalone
./letsencrypt-auto certonly --config cli.ini

Nginx 서비스에 인증서 적용

ssl_certificate     /etc/letsencrypt/live/www.haginara.net/fullchain.pem
ssl_certificate_ke  /etc/letsencrypt/live/www.haginara.net/privkey.pem

기존 웹서비스 실행

sudo service nginx start

정리

위 작업을 하나의 스크립트로 만들어 보았다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#!/bin/bash

INI_PATH=/opt/letsencrypt/cli.ini
NGINX_PID=/var/run/nginx.pid

service nginx stop
sleep 2
if [ -f $NGINX_PID ]; then
    service nginx restart
else
    cd /opt/letsencrypt
    ./letsencrypt-auto certonly --config $INI_PATH
    service nginx start
fi

위 스크립트는 이후 인증서 갱신시 크론잡에서 호출 할 예정이다.

인증서 갱신

Let's Encrypt 인증서의 경우 만료기간이 90일이다. 따라서 매 90일 마다 인증서 갱신을 해주어야 한다.

인증서 갱신은 기존 인증서를 새로 발급 받는 절차와 동일하다 단지 이 작업을 90일마다(인증서 만료전) 실행 해 주기위하여 Cronjob으로 설정할 에정이다.

Cron-job

sudo crontab -e

아래와 같이 크론잡을 설정 해준다.

30 03 01 */3 * /opt/letsencrypt/letsencrypt-cron

Comments !

links

social