← 전체 목록
병원홈페이지보안

Let's Encrypt 자동 갱신 설정으로 SSL 만료 걱정을 없앱니다

ℹ️ 본 글은 정보 제공 목적이며, 광고·제휴 링크가 포함될 수 있습니다.

Let’s Encrypt 인증서 자동 갱신 설정의 중요성을 뼈저리게 느낀 건 인증서 만료 알림을 놓쳐서 병원 사이트가 하루 동안 “이 사이트는 안전하지 않습니다” 경고 페이지를 보여줬을 때였습니다. Let’s Encrypt 인증서는 90일 유효 기간으로 설계되어 있어서 자동 갱신 설정이 없으면 분기마다 반드시 수동으로 갱신해야 합니다. certbot의 자동 갱신 기능을 제대로 설정해두면 이런 사고를 완전히 예방할 수 있습니다.

certbot 자동 갱신 작동 방식

certbot은 설치 시 systemd 타이머 또는 cron 항목을 자동 등록합니다. 먼저 현재 상태를 확인합니다.

# systemd 타이머 확인
sudo systemctl status certbot.timer

# 또는 cron 확인
sudo crontab -l | grep certbot

타이머가 활성화돼 있으면 하루에 두 번 자동으로 갱신 시도를 합니다. 만료 30일 전부터 갱신을 시작하므로 평소에는 아무 일도 일어나지 않습니다.

자동 갱신이 안 되는 경우 수동 설정

타이머가 없거나 cron에 없다면 직접 추가합니다.

# 자동 갱신 테스트 (실제 갱신은 안 함)
sudo certbot renew --dry-run

# 문제없으면 crontab에 추가
sudo crontab -e

crontab에 다음 줄을 추가합니다.

0 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

매일 새벽 3시에 갱신 시도하고, 갱신이 실제로 일어나면 Nginx를 리로드합니다. --quiet 옵션은 불필요한 출력을 없애주고, 오류 시에만 이메일로 알림을 보냅니다.

갱신 후 Nginx 자동 리로드

인증서가 갱신됐어도 웹서버가 새 인증서를 읽으려면 리로드가 필요합니다. --post-hook 또는 deploy-hook 을 사용합니다.

# /etc/letsencrypt/renewal-hooks/deploy/ 폴더에 스크립트 생성
sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
#!/bin/bash
systemctl reload nginx
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

이 방법이 더 권장됩니다. 갱신이 실제로 일어날 때만 nginx가 리로드되기 때문입니다.

만료일 모니터링 추가

자동 갱신을 믿더라도 만료 7일 전 이메일 알림을 추가로 설정하면 안심이 됩니다. Let’s Encrypt는 certbot 등록 시 입력한 이메일로 만료 30일·14일·7일 전에 자동으로 알림을 보내줍니다. 이메일이 등록돼 있는지 확인하세요.

sudo certbot certificates

Expiry Date와 함께 등록된 이메일을 확인할 수 있습니다. SSL 만료는 예방 가능한 사고입니다. 자동 갱신 설정 후 dry-run으로 테스트까지 마쳐두세요.

편집 정책

AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.

작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)