서버/리눅스 서버

Cloudflare 네임서버 Let's Encrypt DNS 갱신하기 (3/3)

ㅋㅋ잠자 2021. 11. 18. 00:30
반응형

안녕하세요? 하기 Cloudflare 네임서버의 마지막 글입니다.

 

HA에서 센서가 나 조만간 인증서 만료되니까 참고해 라고 알려주네요.

Cloudflare 네임서버 사용하기 (1/3)

https://blog.djjproject.com/767

 

Cloudflare 네임서버 DDNS 설정하기 / ddclient (2/3)

https://blog.djjproject.com/768

 

이외에 하기의 글도 있는데요. 이때는 수동으로 갱신을 했었는데 이번에는 자동으로 갱신해 보겠습니다.

실제로는 이전에는 DNSZI 를 사용했고, DDNS 에 장애가 생기면서 그리고 갱신의 귀찮음이 있어서 하기와 같이 시도해 보았습니다.

 

Let's Encrypt SSL 인증서 발급하기 (certbot / renew)

https://blog.djjproject.com/643

 

그럼 시작하겠습니다.

1. certbot 설치하기

root@debian:~# apt install certbot python3-certbot-dns-cloudflare

2. API 키 파일 생성하기

일단은 제가 cloudflare 를 DNS 용도로만 사용하기 때문에 하기와 같이 Global 키를 사용하였습니다.

다른 서비스가 있다면, 보안적인 측면에서 글로벌 키를 사용하지 않는 것을 추천드립니다.

글로벌 키 관련으로는 2번째 DNS 게시글을 참조해 주세요.

 

하기와 같이 생성합니다.

root@debian:~# vi /root/.config/cloudflare_api.conf
dns_cloudflare_email = ""
dns_cloudflare_api_key = ""

3. 갱신하기

일단은 certbot 을 처음 할 때, DNS 로 수동으로 인증을 받았습니다.

따라서, 한번 certbot renew 를 하기 위해서는 한번 auto 로 갱신해줄 필요가 있습니다.

root@debian:~# certbot certonly \
> --dns-cloudflare \
> --dns-cloudflare-credentials /root/.config/cloudflare_api.conf \
> --preferred-challenges dns-01 \
> --domain djjproject.com,*.djjproject.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator dns-cloudflare, Installer None
Cert is due for renewal, auto-renewing...
Renewing an existing certificate
Performing the following challenges:
dns-01 challenge for djjproject.com
dns-01 challenge for djjproject.com
Unsafe permissions on credentials configuration file: /root/.config/cloudflare_api.conf
Waiting 10 seconds for DNS changes to propagate
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/djjproject.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/djjproject.com/privkey.pem
   Your cert will expire on 2022-02-15. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

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

unsafe 퍼미션이 있다고 나오네요. 0600으로 고치겠습니다.

root@debian:~# chmod 0600 /root/.config/cloudflare_api.conf

그리고 웹서버를 reload 합니다.

root@debian:~# service apache2 reload

4. 자동 갱신하기

하루에 매번 갱신할 필요는 없고, 대략 45일마다 한번씩 하면 문제가 없을 것 같습니다.

하기와 같이 작성합니다.

root@debian:~# crontab -e

# certbot renew
0 0 */45 * * su root -c "certbot renew; systemctl reload apache2"

물론 45일에 실행하다 실패하면, 다음 45일까지 인증서가 갱신이 안될 수도 있습니다.

그러면 스크립트를 작성해서 막아볼 수도 있는데요. 일단은 자동으로 갱신이 되는지 또 한 2달 정도 지켜보겠습니다.

 

 

감사합니다.

반응형