안녕하세요,
DNS-01 방식으로 전환하려면 우선 사용하는 ACME 클라이언트가 DNS API 연동을 지원해야 합니다. 예를 들어 certbot, acme.sh, lego 같은 클라이언트는 주요 DNS 제공업체의 API 플러그인을 제공합니다. 워크플로는 크게 두 단계로 나뉩니다. 첫째, DNS 제공업체의 API 인증 정보를 안전하게 저장하고 클라이언트 설정에 반영해야 합니다. 예를 들어 Cloudflare라면 CF_API_EMAIL과 CF_API_KEY 환경 변수를 시스템에 등록하거나, Route53이라면 IAM 권한을 가진 Access Key/Secret Key를 설정합니다. 둘째, ACME 클라이언트의 갱신 훅(hook) 또는 deploy script를 수정하여 인증서 갱신 시 자동으로 _acme-challenge TXT 레코드를 생성·검증·삭제하도록 해야 합니다.
실제 권장 워크플로는 다음과 같습니다. 먼저 기존 HTTP-01 설정을 제거하고, 클라이언트 실행 시 --preferred-challenges dns 또는 해당 DNS 플러그인 옵션을 지정합니다. 이후 DNS API 자격 증명을 환경 변수나 별도 설정 파일에 저장합니다. certbot의 경우 certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini 와 같이 호출하며, acme.sh는 acme.sh --issue -d example.com --dns dns_cf 형태로 사용합니다. 자동 갱신은 systemd timer 또는 cron에 의해 실행되므로, hook 스크립트는 인증서 갱신 후 웹 서버(Nginx, Apache 등)를 reload하도록 구성합니다. 중요한 점은 API 인증 정보 파일의 권한을 600으로 제한해 보안 노출을 막는 것입니다.
이렇게 구성하면 방화벽에서 80 포트를 열지 않아도 DNS-01 검증을 통해 인증서가 정상적으로 갱신됩니다. 추가적으로, DNS 제공업체가 API 호출 지연을 가질 수 있으므로 --dns-propagation-seconds 같은 옵션을 적절히 설정해 TXT 레코드가 전파될 시간을 확보하는 것이 안정적인 운영에 도움이 됩니다.여기서 유용한 정보를 얻으셨기를 바랍니다. 이 내용이 문제에 대한 통찰을 얻는 데 도움이 되었다면 답변을 채택해 주시면 감사하겠습니다. 추가로 궁금한 점이 있으시면 언제든지 메시지를 남겨 주세요. 좋은 하루 보내세요!
HP.