Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(infra): record coolify caddy changes and apply dns-01 challenge as acme protocol #2342

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

jimin9038
Copy link
Member

@jimin9038 jimin9038 commented Jan 30, 2025

Description

서버 1에서 돌아가는 Coolify의 리버스 프록시인 Caddy의 설정을 기록하고,
TLS certificate를 얻기 위한 세 가지 ACME Challenge 중 HTTP challenge나 TLS-ALPN challenge가 아닌 DNS Challenge를 이용하도록 변경합니다. (참고: Caddy ACME Challenges)

Route53에서 DNS를 사용하기 위해 Dockerfile로 caddy-dns/route53 모듈을 설치하여 Caddy 이미지를 새로 빌드하고, 이를 기반으로 컨테이너를 띄웁니다. acme-challenge.caddy를 dynamic configure으로 caddy에 추가하여 DNS-01 challenge를 사용합니다.

참고: Caddy wiki - How to use DNS provider modules in Caddy 2

Closes TAS-1228

Additional context

기존 Challenge (HTTP challenge, TLS-ALPN challenge)들의 문제점

  • HTTP challenge와 TLS-ALPN challenge는 다음과 같은 이유에서 비효율적이라고 판단되었습니다:
    • Caddy 로그를 확인해보았을 때 HTTP-01 챌린지와 TLS-ALPN-01 챌린지는 실패하여 재시도한 적이 많습니다. Let's encrypt의 ACME 서버는 CloudFlare의 넓은 IP 대역폭에서 실행되며, IP 기반 방화벽에 막혀왔을 가능성이 있습니다. )
      • 저희의 80 / 443번 포트는 개방되어 있기는 하지만, 학교 방화벽을 통해서 들어오기 때문에 차단당할 가능성이 있습니다.
    • HTTP-01과 TLS-ALPN-01은 개별 도메인 이름(예: sub.example.com)에 대해서만 인증서를 발급할 수 있습니다. 따라서 매 Frontend Preview 배포가 일어날때마다 인증서를 발급받아야 합니다.

DNS Challenge를 사용하는 이유

1. 와일드카드 인증서 발급 가능

  • DNS-01 챌린지는 와일드카드 인증서(예: .example.com) 발급이 가능한 유일한 방식입니다.
    • HTTP-01과 TLS-ALPN-01은 개별 도메인 이름(예: coolify.codedang.com)에 대해서만 인증서를 발급할 수 있습니다.
    • 와일드카드 인증서를 사용하면 새로운 서브도메인 추가 시 인증서를 다시 발급받을 필요 없이, 기존 인증서를 재사용할 수 있습니다.
    • 따라서, {pr-id}.coolify.codedang.com 을 기준으로 Preview 배포가 일어나는 프론트엔드 배포가 일어나는 저희의 상황에서, *.coolify.codedang.com에 대해서 인증서를 발급받으면, 매 Preview 배포마다 인증서를 발급받을 필요가 없습니다.

2. 방화벽 및 네트워크 제한에 독립적

  • DNS-01 챌린지는 도메인의 DNS TXT 레코드를 추가하여 소유권을 증명하므로, HTTP 또는 HTTPS 포트(80/443)에 대한 외부 접근이 필요하지 않습니다.
  • 학교, 기업, 또는 네트워크 제한이 있는 환경에서도 작동합니다.
    (HTTP나 TLS 챌린지처럼 인증 기관이 저희 서버에 접속하지 않아도 괜찮습니다.)

Before submitting the PR, please make sure you do the following

@jimin9038 jimin9038 self-assigned this Jan 30, 2025
@coolify-skkuding
Copy link

coolify-skkuding bot commented Jan 30, 2025

The preview deployment is ready. 🟢

Open Preview | Open Build Logs

Last updated at: 2025-01-30 08:13:17 CET

Copy link

@jimin9038 jimin9038 changed the title chore(infra): record coolify caddy changes and apply acme chore(infra): record coolify caddy changes and apply dns-01 challenge as acme protocol Jan 30, 2025
@jimin9038 jimin9038 marked this pull request as ready for review January 30, 2025 08:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant