Let's Encrypt가 closed beta 풀렸다고 해서 initation 받아봄. 아직 정식 런칭 전이고 public beta는 연말(9월?) 예정이라고 함. 오늘은 체험 메모.
클라이언트 (letsencrypt-auto) 써서 nginx 도메인에 발급 시도.
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto --agree-dev-preview --server \
https://acme-staging.api.letsencrypt.org/directory \
-d dev.mydomain.com auth
challenge 방식은 http-01. 서버 80 포트로 요청 와서 파일 찾는 방식. webroot에 .well-known/acme-challenge/ 디렉토리 만들어서 파일 놔두면 됨.
nginx 쪽엔 이런 location 추가:
location /.well-known/acme-challenge/ {
root /var/www/letsencrypt;
}
발급 받은 인증서는 /etc/letsencrypt/live/도메인/ 에 심볼릭 링크로 깔림. nginx ssl config에서 이걸 참조.
ssl_certificate /etc/letsencrypt/live/dev.mydomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/dev.mydomain.com/privkey.pem;
갱신은 90일 만기라 cron으로. 일단 아래 스크립트를 주 1회 돌리는 식. 아직 renewal 커맨드가 안정적이지 않아서 갱신 파이프라인은 baked 된 후에 다시 검토 예정.
0 3 * * 0 /opt/letsencrypt/letsencrypt-auto renew --quiet && systemctl reload nginx
발급부터 적용까지 10분이 안 걸림. 공식 런칭되고 rate limit 안정되면 회사 내부 서비스들 (dev, stg) 부터 갈아탈 생각. 갱신 자동화까지 깔끔해지면 상용도 못 쓸 이유 없음.