한눈에
| 항목 | 내용 |
|---|---|
| 비용 | 무료, 가입·결제 없음 |
| 유효기간 | 기본 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회
- 인증서를 폐기해도 한도는 돌아오지 않습니다
A. 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 플러그인으로 자동화합니다.
B. 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로 확인하세요.
C. Windows IIS — win-acme
- 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 - 설치 확인 — 진단에서 만료일·체인·보안 등급을 확인합니다.
출처: Let’s Encrypt 문서 · certbot 문서 · acme.sh · win-acme