• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
가이드

Caddy에서 Cloudflare를 이용한 와일드카드 인증서 사용하기.

달소 달소 907

1

11

 

안녕하세요. 달소입니다.

앞서 Caddy를 docker로 구성하는 가이드를작성해드렸는데요.

 

사실 caddy의 경우 cloudflare의 api를 통한 wildcard 인증서 필요가 굳이.. 없다고생각하긴하지만.

와일드카드 인증서를 발급받아놓으면 인증서만 다운로드받아서 내부 용도로도 쓸수도있기떄문에 일단 작성해보겠습니다.

 

cloudflare api키 확인

아래 링크로 로그인 하신 뒤 

https://dash.cloudflare.com/profile/api-tokens

 

아래 과정으로 API키를 발급받아주세요.

  1. Cloudflare에 로그인하고 대시보드로 이동합니다.
  2. 상단 메뉴에서 "계정(Account)"을 선택하고, "API 키(API Tokens)"를 클릭합니다.
  3. "API 키 만들기(Create Token)" 버튼을 클릭합니다.
  4. "스코프(Scope)" 영역에서 "Zone:DNS:Edit"를 선택합니다. (이 스코프는 DNS 레코드를 읽고 쓸 수 있는 권한을 부여합니다.)
  5. "특정 리소스(Resource)"에서는 "특정 리소스 지정하지 않음(Not Specified)"을 선택합니다.
  6. "생성(Create)" 버튼을 클릭하고, 인증 방법을 선택합니다. (여기서는 "Global API Key"를 선택합니다.)

 

docker-compose / Caddyfile수정하기

기존에 만들어놓은 docker-compose.yml 파일 밑에 아래처럼 변경해줍니다.

이미지는 slothcroissant/caddy-cloudflaredns 로 바꿔주시고
*기본이미지에서 사용하시려면 command에서 클플 모듈을 로드해주시면됩니다.
command: /bin/sh -c 'if ! caddy list-modules | grep -q dns.providers.cloudflare; then caddy add-package github.com/caddy-dns/cloudflare; fi; caddy run --config /caddyfile --adapter caddyfile'

 

환경변수에서 아래 두줄만 사용하시는 환경에 맞춰서 넣어주시면 되겠습니다.

- CF_API_EMAIL=your_email@example.com
- CF_API_KEY=your_api_key

image.png.jpg

 

이제 Caddyfile을 수정해주실 차례입니다.

도메인의 기본설정안에 아래 내용을 넣어주시고 reload or restart해주시면됩니다.

tls {
           dns cloudflare env.CF_API_KEY}
        }

image.png.jpg

 

그리고 재시작 해주시면됩니다.

 

사실 일반적인 도메인의 경우 위처럼 했을때에도 인증서를 보면 와일드카드가 아닌 일반도메인 인증서로 발급받아지실텐데요.

 

*.dalso.org로 와일드카드 인증서를 받아보겠습니다.

image.png.jpg

 

로그를보면 아래처럼 나옵니다.

image.png.jpg

 

경로로 가보면 와일드카드 인증서가 발급받아진걸 확인하실 수 있습니다.

 

image.png.jpg

 

와일드 카드인증서를 서브도메인에 적용하려면 아래가이드가 가장 적절합니다.

*.example.com {
    tls {
        dns <provider_name> [<params...>]
    }

    @foo host foo.example.com
    handle @foo {
        respond "Foo!"
    }

    @bar host bar.example.com
    handle @bar {
        respond "Bar!"
    }

    # Fallback for otherwise unhandled domains
    handle {
        abort
    }
}

https://caddyserver.com/docs/caddyfile/patterns#wildcard-certificates

 

image.png.jpg

 

끝!

신고공유스크랩
11
1등
콜라 2023.04.03. 08:08

오.. 클플 캐디 이미지가 있군요.
클플 플러그인 설치하는기 명령어 한줄이길래..
저는 시작시마다 command 실행하도록 했습니다.

클플 플러긴 확인하고 없으면 클플 설치한 후에 가동하도록 해뒀지요
이 컨테이너가 s6를 안써서 다행이지요.

콜라 2023.04.04. 09:19
달소
command는 기본 command를 덮어쓰기 때문에...
inspect해서 나온 command 앞에 if문을 추가해줬습니다.
콜라 2023.04.04. 10:51
달소
command: /bin/sh -c 'if ! caddy list-modules | grep -q dns.providers.cloudflare; then caddy add-package github.com/caddy-dns/cloudflare; fi; caddy run --config /caddyfile --adapter caddyfile'
이걸로 추가해줬어요!
콜라 2023.04.04. 10:55
달소

달소님이 쓰신 이미지가 얼마나 자주 업데이트 해주는지 모르겠지만, 요건 공식 이미지를 watchtower로 주시(?)할 수 있다는 점이 장점입니다.

아. config 파일 위치가 달라졌어요.
기본으로는 /etc/caddy/Caddyfile를 불러오는데
저 command를 사용하면 /caddyfile을 불러옵니다

command의 뒷부분에 있는 '--config /caddyfile' 를 '--config /etc/caddy/Caddyfile'(caddy image 기본 커맨드) 로 바꿔서 넣으시거나,
도커 컴포즈에서
volumes:
- $PWD/Caddyfile:/etc/caddy/Caddyfile 를
volumes:
- $PWD/Caddyfile:/caddyfile로 바꿔야 해요

행복둥이들 2023.04.04. 16:52
콜라
시작시에 command 실행하도록 하는 방법이 잘 이해가 가질 않는데요.
어떻게 하는건지 좀 자세히 설명 부탁드려도 될까요?
docker 를 나름 꽤 오랫동안 사용하기는 했는데, 단순 명령어 복사만 한 수준이라 잘 이해가 가질 않아서요.
콜라 2023.04.04. 17:18
행복둥이들

docker compose를 사용하셨다면 위 댓글의 문구를 그대로 복사하시면 되요.
컨테이너가 시작될 때 cmd(command)나 entrypoint가 실행되는데 이걸 덮어쓰는 옵션입니다.

 

원래는 바로 caddy가 실행되는데, 그 전에 cloudflare 모듈 설치 후에 실행하도록 합니다

행복둥이들 2023.04.04. 22:47
콜라
docker compose 문법(?) 에 command 가 있었군요. 한 번도 사용해본 적이 없어서 몰랐네요.
친절한 답변 감사드립니다.
콜라 2023.04.04. 23:13
행복둥이들
저도 있다는 것만 알았지, 한번도 써본적은 없습니다.ㅎㅎ
캐디로 저거 하면서 이번에 많이 공부했어요!

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story

본 게시판은 서버구축 게시판과 통합되었습니다.

서버구축 게시판 이동하기