Next.js
배포

certbot이 기억나지 않을 때: Cloudflare + Nginx 와일드카드 SSL 자동화 기록

중년개발자
중년개발자

@loxo

13일 전

20

예전에는 DNS 서버를 직접 구성하고, SSL 인증서도 수동으로 관리하는 것이 당연했습니다.
이제는 무료 SSL 인증서와 다양한 클라우드 서비스 덕분에 인프라 운영이 훨씬 간편해졌지만, 동시에 특정 서비스에 대한 의존도는 점점 높아지고 있습니다.

신규 도메인을 등록할 때마다 매번 다시 찾아보게 되는 certbot 관련 명령어들도 그중 하나입니다. 자주 쓰지는 않지만, 필요할 때마다 헷갈리는 부분들을 개인적인 기록 차원에서 정리해두려 합니다.

이 문서는 Debian Linux + Nginx + Cloudflare DNS 환경을 기준으로 작성되었습니다.

dns.jpg


📘 게으른 관리자(나)를 위한 완벽 가이드

Nginx 와일드카드 SSL 자동 갱신 (Cloudflare편)

이 가이드는 한 번 설정해두면 3개월마다 갱신 신경 쓸 필요 없이 "알아서 돌아가는" 시스템을 구축하는 것을 목표로 합니다.


📋 목차

  1. [사전 준비] Certbot 및 Cloudflare 플러그인 설치
  2. [핵심 설정] Cloudflare API 연동 (자동 갱신의 열쇠)
  3. [실전 1] 첫 번째 와일드카드 인증서 발급
  4. [실전 2] Nginx 웹 서버 연결
  5. [유지보수] 나중에 신규 도메인 추가하기
  6. [점검] 남은 기간 조회 및 갱신 테스트
  7. [요약] 3개월 뒤를 위한 치트시트

1. [사전 준비] Certbot 및 Cloudflare 플러그인 설치

Debian 서버에서 가장 먼저 수행합니다. snap을 사용하여 최신 버전을 설치합니다.

bash
# 1. 패키지 목록 갱신 및 snapd 설치 sudo apt update sudo apt install snapd -y # 2. Snap 코어 업데이트 (필수) sudo snap install core; sudo snap refresh core # 3. Certbot 설치 sudo snap install --classic certbot # 4. 명령어 심볼릭 링크 연결 (편의성) sudo ln -s /snap/bin/certbot /usr/bin/certbot # 5. [중요] Cloudflare DNS 플러그인 설치 # 이 플러그인이 있어야 갱신 시 DNS TXT 레코드를 자동으로 수정해줍니다. sudo snap set certbot trust-plugin-with-root=ok sudo snap install certbot-dns-cloudflare

2. [핵심 설정] Cloudflare API 연동

서버가 관리자 대신 Cloudflare에 로그인해서 DNS를 수정할 수 있도록 권한(Token)을 줘야 합니다.

2-1. Cloudflare 사이트에서 토큰 생성

  1. Cloudflare 로그인 -> 우측 상단 프로필 -> [My Profile] -> 좌측 [API Tokens]
  2. [Create Token] 클릭 -> Custom Token[Get started] 클릭
  3. 설정 값 입력:
  • Token name: Certbot Server (임의 지정)
  • Permissions (권한): Zone / DNS / Edit (필수)
  • Zone Resources: Include / All zones
  1. [Create Token] 완료 후 생성된 긴 암호(Token)를 복사합니다.

2-2. 서버에 토큰 저장
터미널로 돌아와서 비밀 파일을 생성합니다.

bash
# 비밀 폴더 생성 mkdir -p ~/.secrets/certbot # 파일 편집 nano ~/.secrets/certbot/cloudflare.ini

파일 안에 아래 내용을 붙여넣고 저장(Ctrl+X, Y, Enter)합니다.

ini
dns_cloudflare_api_token = 여기에_복사한_토큰_붙여넣기

2-3. 보안 설정 (필수)
이 파일은 비밀번호나 다름없으므로 권한을 잠급니다.

bash
chmod 600 ~/.secrets/certbot/cloudflare.ini

3. [실전 1] 첫 번째 와일드카드 인증서 발급

이제 site-a.com의 인증서를 발급받습니다. DNS 플러그인을 쓰기 때문에 터미널에서 멈추지 않고 한 번에 완료됩니다.

bash
sudo certbot certonly \ --dns-cloudflare \ --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \ -d "*.site-a.com" \ -d "site-a.com"

옵션 설명:

  • --dns-cloudflare: DNS 인증 방식을 사용 (와일드카드 필수)

  • -d "*.site-a.com" -d "site-a.com": 모든 서브 도메인(*)과 루트 도메인 둘 다 커버

성공 시: Congratulations! 메시지와 함께 인증서 경로가 출력됩니다.


4. [실전 2] Nginx 웹 서버 연결

발급받은 인증서를 Nginx 설정 파일에 등록합니다.

파일 열기: /etc/nginx/sites-available/default (또는 해당 도메인 conf)

nginx
server { listen 443 ssl; server_name site-a.com *.site-a.com; # [중요] Certbot이 알려준 경로 입력 ssl_certificate /etc/letsencrypt/live/site-a.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/site-a.com/privkey.pem; # SSL 보안 기본 설정 (필요시 추가) # include /etc/letsencrypt/options-ssl-nginx.conf; # ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # ... 나머지 설정 ... }

적용:

bash
sudo nginx -t # 오타 검사 sudo systemctl reload nginx # 재시작

5. [유지보수] 나중에 신규 도메인 추가하기

시간이 지나 site-b.com을 새로 추가해야 할 때입니다. 1, 2단계 설정은 이미 되어 있으므로 명령어 한 줄이면 끝납니다.

  1. 발급 명령어 실행 (도메인만 변경)
bash
sudo certbot certonly \ --dns-cloudflare \ --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \ -d "*.site-b.com" \ -d "site-b.com"
  1. Nginx 설정 추가: site-b.com용 conf 파일 생성 및 경로 연결.
  2. Nginx 리로드: sudo systemctl reload nginx

6. [점검] 남은 기간 조회 및 갱신 테스트

관리자가 가장 자주 쓰게 될 명령어들입니다.

Q. 내 인증서 언제 만료되나요? (생존 확인)

bash
sudo certbot certificates
  • 결과 중 VALID: 89 days (남은 일수)를 확인하세요.

Q. 자동 갱신 진짜 되나요? (불안 해소)

bash
sudo certbot renew --dry-run
  • Certbot이 가상으로 갱신을 시도해봅니다. Simulated renewals succeeded가 뜨면 안심하셔도 됩니다.

📌 [최종 요약] 유지보수 담당자를 위한 치트시트

나중에 기억이 안 날 때, 이 표만 확인하세요.

상황명령어 / 행동핵심 포인트
남은 기간 확인sudo certbot certificatesExpiry DateVALID 확인
신규 도메인 추가sudo certbot certonly --dns-cloudflare ...5번 항목 명령어 복사해서 사용
자동 갱신 테스트sudo certbot renew --dry-run에러 없는지 확인
인증서 파일 위치/etc/letsencrypt/live/[도메인]/.pem 파일들이 있는 곳
설정 변경 후sudo systemctl reload nginxNginx 재시작 필수

팁: Cloudflare 플러그인을 사용했기 때문에 90일마다 갱신은 백그라운드에서 100% 자동으로 이루어집니다. 여러분이 할 일은 가끔 certificates 명령어로 잘 살아있는지 봐주는 것뿐입니다.

#Certbot#Cloudflare#Nginx#Wildcard SSL#자동화

댓글 0

Ctrl + Enter를 눌러 등록할 수 있습니다
※ AI 다듬기는 내용을 정제하는 보조 기능이며, 최종 내용은 사용자가 확인해야 합니다.