자동 갱신 : Systemd를 사용하여 SSL 인증서를 암호화하고 성공하면 Nginx / Apache를 다시 시작하기

약 100 또는 200 개의 SSL이 있고 다른 날짜에 생성하면 어떻게 될까요?

예, 큰 문제가 있으며 Let’s Encrypt조차도 SSL 인증서가 약 30일 또는 15일 후에 만료될 때 알려줍니다.

우리는 리눅스 크론잡을 사용할 수 있고, 나는 그것을 사용한 적이 있다. 그러나 그것은 좋은 생각이 아닙니다.

더 좋은 방법은 systemd 서비스와 systemd timer 를 사용하는 것입니다.

systemd.service 및 systemd.timer를 만들어 Let’s Encrypt SSL 인증서를 갱신합니다.

우리는 새로운 Let’s Encrypt SSL 인증서를 얻을 때 Certbot을 독립형으로 사용합니다.

갱신 구성은 /etc/letsencrypt/renewal에 있습니다.

이제 /etc/letsencrypt/renewal 파일을 확인합니다(예: /etc/letsencrypt/renewal/serverdiary.com.conf).

# renew_before_expiry = 30 days
version = 1.0.0
archive_dir = /etc/letsencrypt/archive/serverdiary.com
cert = /etc/letsencrypt/live/serverdiary.com/cert.pem
privkey = /etc/letsencrypt/live/serverdiary.com/privkey.pem
chain = /etc/letsencrypt/live/serverdiary.com/chain.pem
fullchain = /etc/letsencrypt/live/serverdiary.com/fullchain.pem

# Options used in the renewal proces
[renewalparams]
authenticator = webroot
account = hidden
server = https://acme-v02.api.letsencrypt.org/directory
webroot_path = /home/serverdiary/public_html
post_hook = systemctl restart nginx
[[webroot_map]]

webroot_path 동일하기 때문에 webroot_map에 대한 구성이 없습니다.

webroot_path가 다른 단일 SSL에 대한 webroot_map 예

[[webroot_map]]
serverdiary.com = /home/serverdiary/public_html
www.serverdiary.com = /home/serverdiary/public_html
img.serverdiary.com = /home/serverdiary/public_html/img

/etc/systemd/system/letsencrypt.service 파일을 만듭니다.

# vi /etc/systemd/system/letsencrypt.service

그리고 아래에 코드를 붙여 넣으십시오.

[Unit]
Description=Certbot Renewal

[Service]
ExecStart=/usr/local/bin/certbot renew --post-hook "systemctl reload nginx"

/etc/systemd/system/letsencrypt.time 파일을 만듭니다.

# vi /etc/systemd/system/letsencrypt.timer

아래에 코드를 붙여 넣으십시오.

[Unit]
Description=Timer for Certbot Renewal

[Timer]
OnBootSec=300
OnUnitActiveSec=6h

[Install]
WantedBy=multi-user.target

사용 권한을 755로 변경합니다.

# chmod 755 /etc/systemd/system/letsencrypt.service
# chmod 755 /etc/systemd/system/letsencrypt.timer

sysmctl 데몬을 다시 로드하고, 시스템 시작 시 활성화하고, 다음 명령으로 서비스를 시작합니다.

# systemctl daemon-reload
# systemctl enable /etc/systemd/system/letsencrypt.service
# systemctl enable /etc/systemd/system/letsencrypt.timer
# systemctl start /etc/systemd/system/letsencrypt.service
# systemctl start /etc/systemd/system/letsencrypt.timer

Letsencrypt.timer는 6시간마다 Letsencrypt.service를 호출하고 SSL이 하나 성공적으로 갱신되면 Nginx 서비스가 다시 시작됩니다.

이제 Let’s Encrypt SSL 만료 시간을 잊을 수 있습니다. 그러나 때로는 웹사이트의 SSL이 갱신되었는지 확인하는 것을 잊지 마십시오.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다