기본 정보
| 항목 | 내용 |
|---|---|
| 비용 | 무료, 가입·결제 없음 |
| 유효기간 | 기본 90일 (선택형: tlsserver 45일, shortlived 약 6.7일) |
| 도메인 확인 | HTTP-01(80 포트), DNS-01(TXT _acme-challenge), TLS-ALPN-01(443 포트) |
| 와일드카드 | DNS-01로만 가능 |
| 상세 | 프로필, 검증 방식 |
발급 한도
연습하기 전에 알아 둔다. 공식 한도 문서 기준이다.
- 완전히 같은 도메인 조합은 7일에 5장. 예외 신청이 안 되니 연습은
--dry-run이나 스테이징 서버로 한다. - 등록 도메인당 7일에 50장, 계정당 3시간에 신규 주문 300건
- 인증 실패는 도메인별 1시간에 5회
- 인증서를 폐기해도 한도는 돌아오지 않는다.
certbot (리눅스 nginx, apache)
- 도메인이 서버를 가리키는지 확인한다. DNS 전파 확인에서 A 레코드를 조회하면 된다. 서버의 80 포트가 인터넷에서 열려 있어야 한다(HTTP-01).
- certbot을 설치한다. certbot.eff.org에서 OS와 웹서버를 고르면 배포판에 맞는 설치 명령이 나온다.
- 리허설한다. 인증서는 저장되지 않는다.
sudo certbot certonly --nginx --dry-run -d example.com -d www.example.com - 발급하고 웹서버 설정에 반영한다(apache는
--apache).
웹서버 설정을 직접 관리하려면 webroot 방식으로 받는다.sudo certbot --nginx -d example.com -d www.example.comsudo certbot certonly --webroot -w /var/www/html -d example.com - 파일은
/etc/letsencrypt/live/example.com/fullchain.pem(서버 인증서 + 중간 인증서)과privkey.pem(개인키)이다. nginx의ssl_certificate에는fullchain.pem을 써야 한다. - 갱신을 점검한다.
sudo certbot renew --dry-run
- 와일드카드는 DNS-01 수동 방식으로 받는다.
안내된 TXT 값을sudo certbot certonly --manual --preferred-challenges=dns -d example.com -d '*.example.com'_acme-challenge.example.com에 넣고, DNS 전파 확인의 권한 네임서버 행에 값이 보이면 Enter를 누른다. 수동 방식은 갱신할 때마다 새 TXT가 필요하다. 계속 쓸 거라면 DNS 사업자 API 플러그인으로 자동화한다.
acme.sh (셸 스크립트 하나로)
- 설치한다.
curl https://get.acme.sh | sh -s email=my@example.com - 기본 발급처를 Let’s Encrypt로 바꾼다. acme.sh의 기본 CA는 ZeroSSL이다.
acme.sh --set-default-ca --server letsencrypt - 셋 중 하나로 발급한다.
연습할 때는acme.sh --issue -d example.com -w /var/www/html # webroot acme.sh --issue --nginx -d example.com -d www.example.com # nginx 모드 acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf # DNS API (예: Cloudflare)--server letsencrypt_test를 쓴다. - 설치하고 리로드한다. 경로는 환경에 맞게 바꾼다.
acme.sh --install-cert -d example.com \ --key-file /etc/nginx/ssl/example.com.key \ --fullchain-file /etc/nginx/ssl/example.com.pem \ --reloadcmd "systemctl reload nginx" - 자동 갱신 cron은 설치할 때 등록된다.
crontab -l로 확인한다.
win-acme (Windows IIS)
- win-acme.com에서 zip을 받는다(64비트
trimmed판). - 임시 폴더가 아닌 곳에 압축을 푼다. 자동 갱신 예약 작업이 이 경로에서 실행된다.
- 관리자 권한으로
wacs.exe를 실행한다. - 메뉴에서
N(기본 설정으로 새 인증서)을 고르고 대상 IIS 사이트 바인딩을 고른다. - 약관에 동의하고 이메일을 넣으면 HTTP 검증을 거쳐 발급되고, IIS 바인딩도 자동으로 생성되거나 교체된다.
- 작업 스케줄러에 갱신 작업이 생겼는지 확인한다.
문제가 생기면
- HTTP-01은 80 포트가 막혀 있으면 실패한다(방화벽, ISP 차단, 해외 IP 차단 정책). 이럴 땐 DNS-01을 쓴다.
- HTTP→HTTPS 리다이렉트는 있어도 된다. Let’s Encrypt는 리다이렉트를 따라간다(80, 443 포트로만).
- DNS API 키를 서버에 두기 싫다면
_acme-challenge를 CNAME으로 API가 되는 다른 존에 위임할 수 있다(공식). - 어느 CA로 발급됐는지는
openssl x509 -noout -issuer -in fullchain.pem으로 본다. - 설치가 됐는지는 진단에서 만료일, 체인, 보안 등급으로 확인한다.