카테고리

전체글

목록닫기 ▲
⊞ 𝄘 ⊟
Android WebView 예제
인터넷 접근 권한 허가 layout activity xml java webview java 속성 추가 코드(파일 업로드 등)
2026. 09. 02.
2026. 09. 02. 조회수 표시생략
[Python] venv(가상환경) 사용법
1. 가상환경의 필요성 Python 프로젝트에서 패키지를 설치했을 때 패키지들 끼리 충돌 이슈를 겪지 않기 위해 개발환경 세팅에 많은 시간을 소모합니다. 불필요한 리소스 낭비를 막기 위해...
2026. 04. 07.
2026. 04. 07. 조회수 표시생략
[Let’s Encrypt 인증서] 발급받은 인증서 확인 및 연장 방법
# 인증서 만료일자 확인 [root@bcs16 ~]# certbot certificates Saving debug log to /var/log/letsencrypt/letsencrypt.log —————————————- Found the following certs: Certificate Name: ippbx.mediacall.co.kr Serial Number: 36cf2e78fbbc00f26c117b613ac7190bca3 Key...
2025. 04. 28.
2025. 04. 28. 조회수 표시생략
[Let’s Encrypt] 와일드카드 인증서 발급 & Cloudflare 자동화 방법
1. 개요 Let’s Encrypt 와일드카드 인증서(*.domain.com)는 보안상 DNS-01 챌린지 방식만 지원합니다. 기존의 수동 방식(Manual)은 갱신 때마다 DNS TXT 레코드를 직접 수정해야 하는 번거로움이 있어, Cloudflare...
2025. 04. 28.
2025. 04. 28. 조회수 표시생략
개인파산 시 궁금해 하는 질문 모음
1. 파산하면 은행거래 못하나요? 내 명의로 통장 못만드나요? ->> 아무 상관 없습니다. 언제든 만들어 줍니다. 파산해서 은행거래를 못하는게 아니라      채무가 있으니 압류가 들어올까봐 거래를 안하는 것입니다.  2....
2024. 09. 01.
2024. 09. 01. 조회수 표시생략
1 2 3 17

[Let’s Encrypt] 와일드카드 인증서 발급 & Cloudflare 자동화 방법

1. 개요

Let’s Encrypt 와일드카드 인증서(*.domain.com)는 보안상 DNS-01 챌린지 방식만 지원합니다. 기존의 수동 방식(Manual)은 갱신 때마다 DNS TXT 레코드를 직접 수정해야 하는 번거로움이 있어, Cloudflare API를 이용한 완전 자동화 설정을 권장합니다.

2. 주요 시행착오와 해결 방법

  • 명령어 오류: 블로그 등에서 명령어를 복사할 때 하이픈(-)이 긴 대시 (-)로, 따옴표(“)가 둥근 따옴표로 바뀌어 인식되지 않는 문제가 발생할 수 있습니다. 반드시 표준 ASCII 문자를 사용해야 합니다.
  • 수동 방식의 한계: _acme-challengs 레코드를 중복 등록하거나, DNS 전파 시간을 기다리지 않고 엔터를 누를 경우 NXDOMAIN 또는 Incorrect TXT record 에러가 발생합니다.
  • 알고리즘의 충돌: 기존 인증서가 ECDSA 방식일 때 새 명령어가 RSA를 시도하면 충돌이 발생합니다. –key-type ecdsa 옵션을 명시하여 해결할 수 있습니다.

3. Cloudflare DNS 플러그인 자동화 단계

3.1 패키지 업데이트 및 Certbot 설치

Let’s encrypt는 certbot를 통해 인증서를 발급해야 합니다. 아직 관련 패키지가 설치되어 있지 않았다면, 패키지 설치를 진행합니다.

// 패키지 업데이트
apt-get install update
// 패키지 설치
apt-get install certbot -y
3.2 플러그인 설치
apt-get install python3-certbot-dns-cloudflare
3.3 API 토큰 설정

Cloudflare 대시보드에서 Zone:DNS:Edit 권한을 가진 토큰을 생성한 뒤 서버에 저장합니다.

  • 파일 경로: 예) ~/.secrets/certbot/cloudflare.ini
  • 파일 내용: 예:) dns_cloudflare_api_token = YOUR_API_TOKEN
  • 보안 설정: chmod 600 ~/.secrets/certbot/cloudflare.ini
3.4 인증서 발급 및 자동 갱신 설정
certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
  --cert-name mydomain.com \
  --key-type ecdsa \
  -d "mydomain.com" -d "*.mydomain.com" \
  --preferred-challenges dns \
  --non-interactive \
  --agree-tos \
  -m  [email protected]
3.5 기존 수동/Standalone 인증서 전환 팁

기존에 manual이나 standalone 방식으로 발급받은 인증서가 있다면 certbot renew 시 에러가 발생합니다. 이때는 위 명령어를 –force-renewal 옵션과 함께 실행하여 인증서의 갱신 메커니즘 자체를 dns-cloudflare로 교체해 주어야 합니다.

3.6 최종 확인

설정이 완료된 후 아래 명령어를 실행하여 모든 도메인이 성공적으로 업데이트되는지 확인합니다.

certbot renew --dry-run

결과: “Congratulations, all simulated renewals succeeded:” 메시지가 나오면 정상적으로 인증서가 갱신되었습니다.

Let’s encrypt 인증서 발급할 때 유의사항

Let’s encrypt는 Apache2나 Nginx를 운영할 때 SSL 인증서를 무료로 발급해 주는 툴이다. 구글, 모질라 재단 등에서 후원하고 있는 프로젝트이기도 하다.

Let’s encrypt는 리눅스 터미널에서 명령어를 사용해야 하는데, 인증서 발급 시 유의사항이 있다.

Cleaning up challenges
Problem binding to port 80: Could not bind to IPv4 or IPv6.

80포트가 이미 사용 중이라서 certbot 명령어를 사용해 인증서를 발급 받을 수 없다고 출력이 되었다.

이 경우 아파치나 엔진엑스가 실행 중이라면 위와 같은 문구가 출력될 수가 있는 것이다. 따라서 아파치나 엔진엑스를 죽여주면 된다.

예: service apache2 stop (엔진 엑스를 사용중이라면 service nginx start)

서버 엔진이 죽었다면, 다시 certbot 명령을 사용해서 인증서를 발급받으면 된다. 만약 인증서를 발급받았다면, 다시 서버엔진을 실행해 주어야 한다.

예: service apche2 start (엔진 엑스를 사용중이라면 service nginx start)