Infra?

[GCP] 와일드카드 도메인을 위한 인증서 발급 및 부하분산기 설정

swotato 2025. 10. 20. 13:35

참고: 링크

인증서, DNS 승인 관리


설명

  • GCP(Google Cloud Platform)에서 와일드카드가 포함된 도메인을 위한 인증서를 발급, 설정, 부하분산기에 적용하는 방법에 대해 정리한 문서입니다.
  • 적용 예시
    • 요구사항: A 레코드 부분에 따라서 test.kr 페이지에서 보여줄 내용을 달리 하고싶다 => '*.test.kr 로 부하분산 셋팅이 필요하다.

서론

목적

  • 와일드카드를 포함한 도메인 경로를 부하분산기에서 사용하고 싶을 때 수행한다.
  • 해당 예시에서의 목적:

방법: GCP 인증서 발급

  • 부하분산기에서 *.avacaht.kr 라우팅 규칙을 추가하기 위해선, *.test.kr 을 포함하는 인증서를 만들어야한다.
  • ‘GCP > 인증서 관리 > 기존 인증서 > SSL 인증서 추가 > Google 관리형 인증서’에서는 와일드카드를 포함한 도메인을 설정할 수 없다.
  • ‘GCP > 인증서 관리 > 인증서 > Google 관리형 인증서 > DNS 승인’ 인증서를 만들어야한다. (와일드카드 사용 가능한 인증서)

(참고: 공식문서)

와일드 카드를 사용하는 Google 관리형 인증서는 DNS 승인을 사용하는 경우에만 Certificate Manager에서 지원됩니다.

부하 분산기 승인: DNS 레코드를 만들지 않고 지원되는 부하 분산기에 인증서를 직접 배포합니다. 이 방법은 구성 속도가 더 빠르지만 와일드 카드 인증서 또는 지역 인증서를 지원하지 않습니다. 또한 인증서 관리자는 부하 분산기가 완전히 설정되고 네트워크 트래픽을 제공한 후에만 인증서를 프로비저닝할 수 있습니다.

DNS 승인: 도메인 소유권 확인을 위한 전용 DNS 레코드를 만든 후 지원되는 부하 분산기에 인증서를 직접 배포합니다. 이 방법을 사용하면 Certificate Manager가 대상 프록시가 네트워크 트래픽을 제공할 준비가 되기 전에 인증서를 미리 프로비저닝할 수 있습니다.

DNS 승인은 단일 도메인 이름만 포함합니다. 대상 인증서에 사용할 각 도메인 이름에 대한 별도의 DNS 승인을 만들어야 합니다. **.myorg.example.com**과 같이 와일드 카드 인증서에 DNS 승인을 만드는 경우 상위 도메인에 대한 DNS 승인을 구성합니다(예: myorg.example.com).


설정 방법

순서 1. 인증서 생성

1. ‘보안’ > ‘인증서 관리자’ > ‘인증서’ > ‘인증서 추가’ 클릭

2. 인증서 정보 작성

  • 위치: 전역
  • 범위: 기본
    • 부하 분산기의 유형에 따라서 선택한다.
    • ‘test’ 부하 분산기의 경우 ‘전역 외부 애플리케이션 부하 분산기’이므로, 전역 선택.
  • 도메인 이름: *.test.kr (사용할 도메인 작성)
  • 승인 유형: DNS 승인
    • 해당 도메인의 DNS 승인이 아직 없다면 생성한다.

입력한 내용 전체보기


순서 2. GCP Cloud DNS 영역 생성

1. ‘보안’ > ‘인증서 관리자’ > ‘인증서’ > ‘인증서 추가’ 클릭

2. 영역 정보 작성

  • 영역 유형: 전체 공개
  • 도메인 이름: test.kr <- 중요
  • dnssec: 사용안함

생성 완료


순서 3. DNS 영역 CNAME 레코드 생성

공식 문서 참고 DNS 승인 관리 | Certificate Manager | Google Cloud

1. ‘영역 세부정보 > 레코드 모음 > 표준 추가’ 클릭


2. 레코드 정보 입력, 생성

  • 이때, ‘DNS 이름’, ‘리소스 레코드 유형’, ‘표준 이름’은 ‘순서 1’에서 인증서 생성 후 생성된 ‘DNS 승인’ 필드 값을 입력한다.
  • 필드
    • DNS 이름: (순서1의 결과 > DNS 승인 > DNS 레코드 이름)
    • 리소스 레코드 유형: CNAME (순서1의 결과 > DNS 승인 > DNS 레코드 유형)
    • 표준 이름1: (순서1의 결과 > DNS 승인 > DNS 레코드 데이터)


순서 4. 인증서 맵 생성, 설정

 

1. 인증서 맵 만들기

인증서와 연결된 인증서 항목을 참조하는 인증서 맵을 만듭니다.

gcloud certificate-manager maps create "CERTIFICATE_MAP_NAME"
  • CERTIFICATE_MAP_NAME: 인증서 맵의 이름

2. 인증서 맵  항목만들기

인증서 맵 항목을 만들고 여기에 최대 4개의 인증서를 연결할 수 있습니다. 호스트 이름에 여러 인증서를 지정할 때는 각 인증서에 다른 키 알고리즘을 사용하는 것이 좋습니다. 예를 들어 한 인증서에는 ECDSA를 사용하고 다른 인증서에는 RSA를 사용할 수 있습니다. 단일 인증서 맵 항목과 여러 인증서를 연결하면 자체 관리형 인증서를 Google 관리형 인증서로 이전할 때도 도움이 됩니다.

여러 인증서를  인증서  항목과 연결하려면 쉼표로 구분된 인증서 이름 목록을 제공합니다. 하위 도메인마다 별도의 인증서  항목을 만들어야 합니다.

gcloud certificate-manager maps entries create "CERTIFICATE_MAP_ENTRY_NAME" \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAMES" \
    --hostname="HOSTNAME"
  • CERTIFICATE_MAP_ENTRY_NAME: 인증서 맵 항목의 이름입니다.
  • CERTIFICATE_MAP_NAME: 인증서 맵 항목이 연결된 인증서 맵의 이름입니다.
  • CERTIFICATE_NAMES: 이 인증서 맵 항목과 연결할 인증서의 이름을 쉼표로 구분한 목록입니다.
  • HOSTNAME: 인증서 맵 항목과 연결하려는 호스트 이름

 

3. 인증서 맵 항목이 활성 상태인지 확인

해당 인증서 맵을 대상 프록시에 연결하기 전에 인증서 맵 항목이 활성 상태인지 확인합니다.

gcloud certificate-manager maps entries describe "CERTIFICATE_MAP_ENTRY_NAME" \
    --map="CERTIFICATE_MAP_NAME"
  • CERTIFICATE_MAP_ENTRY_NAME: 인증서 맵 항목의 이름입니다.
  • CERTIFICATE_MAP_NAME: 인증서 맵 항목이 연결된 인증서 맵의 이름입니다.

 

4. 대상 프록시에 인증서 맵 연결

인증서 맵을 새 대상 프록시 또는 기존 대상 프록시에 연결할 수 있습니다.

해당 예시의 경우, 기존 프록시 (‘test’ 부하 분산기의 프록시인 ‘test-proxy-target’)에 연결한다.

gcloud compute target-https-proxies update "PROXY_NAME" \
    --certificate-map="CERTIFICATE_MAP_NAME" \
    --global
  • PROXY_NAME: 대상 프록시 이름
  • CERTIFICATE_MAP_NAME: 인증서 맵 항목과 연결된 인증서를 참조하는 인증서 맵의 이름

대상 프록시 찾는 법

  1. ‘네트워크 서비스 > 부하 분산 > 부하 분산기’의 하단에 위치한 ‘부하 분산 구성요소 뷰’ 클릭
  2. ‘부하 분산 구성요소’의 ‘대상 프록시’ 탭에서 해당하는 프록시 찾기
    • 참고: HTTPS 프록시에 설정해야한다.
    • 해당 예시에서는 ‘test-target-proxy’
  3. 세부정보에서 연결되어있는 부하 분산기, 인증서 맵 등 확인 가능
    • 참고: (아직 설정하지 않닸다면) 기본적으로 인증서 맵은 존재하지 않는 상태이다.

 

5. 대상 프록시에 인증서 맵 연결

인증서 맵을 새 대상 프록시 또는 기존 대상 프록시에 연결할 수 있습니다.

해당 예시의 경우, 기존 프록시 (‘test’ 부하 분산기의 프록시인 ‘test-proxy-target’)에 연결한다.

 

'부하 분산기 세부정보’에서, 기존 인증서는 ‘무시된 인증서’가 되고, 새롭게 적용한 인증서 맵이 활성화 되는 것 확인.

 


 

순서 5.  부하 분산기 수정

  • 필요시, ‘부하 분산기 세부정보’에서 ‘라우팅 규칙’을 수정한다.
  • 예시: 호스트 *.test.kr 일 때의 경로, 백엔드 등…
  • 해당 예시에서는, ‘일치하지 않는 모든 URL’ 규칙에서 *.test.kr를 처리하도록 의도함.


순서 6. DNS 관리 서비스에서 레코드 수정

  • avachat.kr의 경우, ‘가비아’ 사용
  • 레코드 추가
  • A레코드 / *.test.kr / (부하 분산기 IP)
  •