웹서버

Cloudflare로 네임서버 옮기고 인증서 발급받기 (feat. ChatGPT)

#Cloudflare#도메인#네임서버#인증서#Let's Encrypt
웹서버 31 2025. 12. 20. 2025. 12. 30.

아래는 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 계정 생성 & 도메인 추가

  1. https://cloudflare.com 가입
  2. Add a site
  3. 도메인 입력 (예: example.com)
  4. 플랜 선택 → Free 가능

1-2. 기존 DNS 레코드 확인

Cloudflare가 기존 DNS 레코드를 자동으로 스캔함

👉 누락된 게 있으면 기존 DNS에서 복사해서 추가

⚠️ 메일 사용 중이면 MX/TXT 반드시 확인


1-3. 네임서버 변경 (중요)

Cloudflare가 아래처럼 2개의 NS를 제공함:

alice.ns.cloudflare.com

bob.ns.cloudflare.com

도메인 구매처(가비아, 카페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

👉 생성 후 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에서 일어나는 일

갱신할 때 자동으로:

  1. Cloudflare DNS에 _acme-challenge.example.com TXT 추가
  2. Let’s Encrypt 검증
  3. TXT 레코드 자동 삭제
  4. 인증서 교체
  5. 웹서버 reload

👉 완전 무중단 자동화


8️⃣ 자주 발생하는 문제

❌ 인증 실패

  • API 토큰 권한 부족
  • Zone 제한 안 걸어둠
  • TXT 전파 시간 부족 (Cloudflare는 거의 즉시)

❌ wildcard만 있고 루트 도메인 안 됨

→ 반드시 -d example.com도 같이 지정


✅ 최종 체크리스트

  • Cloudflare 네임서버 적용
  • API Token 생성 (DNS Edit)
  • certbot + dns-cloudflare 설치
  • *.example.com 발급
  • 자동 갱신 테스트 성공