아래는 Cloudflare로 네임서버 이전 → Let’s Encrypt 와일드카드 인증서 발급 → 자동 갱신까지 실무 기준으로 한 번에 따라 할 수 있는 상세 가이드야. (feat. ChatGPT)
(서버는 Linux / Nginx(or Apache) 기준, 가장 많이 쓰는 certbot + DNS-01 방식으로 설명할게)
0️⃣ 전체 구조 한 번에 이해하기
- DNS 제공자: Cloudflare
- 인증서: Let’s Encrypt (Wildcard:
*.example.com) - 검증 방식: DNS-01
- 자동화: Cloudflare API + certbot cron/systemd
왜 DNS-01이냐면:
- 와일드카드*
.) 인증서는 HTTP-01 방식 불가 - DNS에 TXT 레코드를 자동으로 추가해야 함
1️⃣ Cloudflare로 네임서버 옮기기
1-1. Cloudflare 계정 생성 & 도메인 추가
- https://cloudflare.com 가입
- Add a site
- 도메인 입력 (예:
example.com) - 플랜 선택 → Free 가능
1-2. 기존 DNS 레코드 확인
Cloudflare가 기존 DNS 레코드를 자동으로 스캔함
👉 누락된 게 있으면 기존 DNS에서 복사해서 추가
⚠️ 메일 사용 중이면 MX/TXT 반드시 확인
1-3. 네임서버 변경 (중요)
Cloudflare가 아래처럼 2개의 NS를 제공함:
도메인 구매처(가비아, 카페24, GoDaddy 등)에서:
- 네임서버를 Cloudflare NS로 변경
⏱️ 전파 시간: 수 분 ~ 최대 24시간
확인:
dig NS example.com
2️⃣ Cloudflare API 토큰 생성 (DNS 자동화 핵심)
2-1. API Token 만들기
Cloudflare Dashboard →
My Profile → API Tokens → Create Token
권한 설정 (최소 권한)
- Permissions:
- Zone → DNS → Edit
- Zone Resources:
- Include → Specific zone →
example.com
- Include → Specific zone →
👉 생성 후 API Token 복사 (한 번만 보임)
2-2. 서버에 토큰 저장
sudo mkdir -p /root/.secrets/certbot
sudo chmod 700 /root/.secrets/certbot
sudo nano /root/.secrets/certbot/cloudflare.ini
dns_cloudflare_api_token = YOUR_API_TOKEN_HERE
sudo chmod 600 /root/.secrets/certbot/cloudflare.ini
3️⃣ certbot + Cloudflare 플러그인 설치
Ubuntu / Debian
sudo apt update
sudo apt install -y certbot python3-certbot-dns-cloudflare
Amazon Linux 2 / RHEL 계열
sudo yum install -y certbot python3-certbot-dns-cloudflare
확인:
certbot --version
4️⃣ 와일드카드 인증서 발급
4-1. 발급 명령
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /root/.secrets/certbot/cloudflare.ini \
-d example.com \
-d "*.example.com"
옵션 설명
certonly→ 인증서만 발급 (웹서버 설정 직접)-d example.com→ 루트 도메인- *
-d ".example.com"→ 와일드카드
4-2. 성공 시 생성 위치
/etc/letsencrypt/live/example.com/
├── fullchain.pem
├── privkey.pem
5️⃣ 웹서버에 인증서 적용
Nginx 예시
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
sudo nginx -t
sudo systemctl reload nginx
Apache 예시
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
6️⃣ 자동 갱신 설정 (가장 중요)
6-1. certbot 자동 갱신 테스트
sudo certbot renew --dry-run
성공 메시지 나오면 OK ✅
6-2. 자동 갱신 방식
🔹 systemd (대부분 기본 활성화)
systemctl list-timers | grep certbot
이미 하루 2회 자동 실행됨
🔹 cron 방식 (직접 설정하고 싶다면)
sudo crontab -e
0 3 * * * certbot renew --quiet --deploy-hook "systemctl reload nginx"
7️⃣ 갱신 시 Cloudflare에서 일어나는 일
갱신할 때 자동으로:
- Cloudflare DNS에
_acme-challenge.example.comTXT 추가 - Let’s Encrypt 검증
- TXT 레코드 자동 삭제
- 인증서 교체
- 웹서버 reload
👉 완전 무중단 자동화
8️⃣ 자주 발생하는 문제
❌ 인증 실패
- API 토큰 권한 부족
- Zone 제한 안 걸어둠
- TXT 전파 시간 부족 (Cloudflare는 거의 즉시)
❌ wildcard만 있고 루트 도메인 안 됨
→ 반드시 -d example.com도 같이 지정
✅ 최종 체크리스트
- Cloudflare 네임서버 적용
- API Token 생성 (DNS Edit)
- certbot + dns-cloudflare 설치
*.example.com발급- 자동 갱신 테스트 성공