ACME는 CA가 domain control을 검증하고 X.509 certificate의 발급, 갱신, 폐기를 자동화하도록 정의한 RFC 8555 protocol이다. Certbot은 이 protocol을 구현한 ACME client다.
Directory discovery -> Account registration -> New order -> Authorization / challenge -> Domain-control validation -> CSR finalize -> Certificate download and deployment -> Renewal or revocation
http://DOMAIN/.well-known/acme-challenge/TOKEN을 TCP/80으로 조회한다.–nginx, –apache, –webroot와 잘 맞는다._acme-challenge.DOMAIN 아래 TXT record로 domain control을 증명한다.# HTTP-01: webroot sudo certbot certonly --webroot -w /var/www/html -d example.com # HTTP-01: temporary standalone server sudo certbot certonly --standalone -d example.com # DNS-01: manual wildcard test (interactive; hooks 없이는 자동 갱신 불가) sudo certbot certonly --manual --preferred-challenges dns \ --test-cert -d example.com -d '*.example.com' # 기존 lineage의 renewal path를 staging CA로 검증 sudo certbot renew --dry-run
–test-cert 또는 –staging, renew –dry-run으로 validation과 deployment hook을 검증한다. staging certificate는 browser가 신뢰하지 않으므로 운영 배포용이 아니다.
–manual보다 web server/webroot/DNS API plugin을 우선한다.issue와 wildcard용 issuewild 정책을 확인한다.unauthorized: DNS가 잘못된 host를 가리키거나 challenge response/TXT value가 일치하지 않는 경우가 많다.connection: firewall, NAT, load balancer, TCP/80 또는 TCP/443 접근성을 확인한다.–server DIRECTORY_URL로 다른 ACME directory를 지정할 수 있다.