참고: 링크
- https://cloud.google.com/certificate-manager/docs/dns-authorizations?hl=ko#auth-create
- https://cloud.google.com/load-balancing/docs/ssl-certificates/self-managed-certs?hl=ko#wildcards
- https://2juhyunju.tistory.com/184
- https://harusw.com/entry/가비아-도메인-연결-및-Google-Blogger-www-맞춤-도메인-등록-방법
- https://medium.com/@jwlee98/gcp-dns-부터-하나씩-해보는-google-cloud-로-서비스-해보기-1탄-cloud-dns-a77acc9350cd
- https://support.bespinglobal.com/ko/support/solutions/articles/73000643502--certificate-manager-dns-승인-구글관리형-인증서-배포-가이드
- https://lemontia.tistory.com/1074
- https://cloud.google.com/dns/docs/migrating?hl=ko
- https://github.com/GoogleCloudPlatform/multi-provider-dns-with-clouddns
- https://99bugs.tistory.com/482
- https://support.bespinglobal.com/ko/support/solutions/articles/73000643502--certificate-manager-dns-승인-구글관리형-인증서-배포-가이드
- https://cloud.google.com/certificate-manager/docs/deploy-google-managed-dns-auth?hl=ko
인증서, DNS 승인 관리
- https://cloud.google.com/certificate-manager/docs/certificates?hl=ko#view_the_state_of_a_certificate
- https://cloud.google.com/certificate-manager/docs/dns-authorizations?hl=ko
- 프로비저닝
설명
- 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 승인이 아직 없다면 생성한다.

- 해당 도메인의 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. 인증서 맵 생성, 설정
- 2025.10.17 기준, ‘인증서 맵’ 생성 및 관리는 콘솔에서 불가능하다. 반드시 터미널에서 gcloud를 이용할 것.
- 공식 문서 참고
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: 인증서 맵 항목과 연결된 인증서를 참조하는 인증서 맵의 이름
대상 프록시 찾는 법
- ‘네트워크 서비스 > 부하 분산 > 부하 분산기’의 하단에 위치한 ‘부하 분산 구성요소 뷰’ 클릭

- ‘부하 분산 구성요소’의 ‘대상 프록시’ 탭에서 해당하는 프록시 찾기
- 참고: HTTPS 프록시에 설정해야한다.
- 해당 예시에서는 ‘test-target-proxy’

- 세부정보에서 연결되어있는 부하 분산기, 인증서 맵 등 확인 가능
- 참고: (아직 설정하지 않닸다면) 기본적으로 인증서 맵은 존재하지 않는 상태이다.

- 참고: (아직 설정하지 않닸다면) 기본적으로 인증서 맵은 존재하지 않는 상태이다.
5. 대상 프록시에 인증서 맵 연결
인증서 맵을 새 대상 프록시 또는 기존 대상 프록시에 연결할 수 있습니다.
해당 예시의 경우, 기존 프록시 (‘test’ 부하 분산기의 프록시인 ‘test-proxy-target’)에 연결한다.

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

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

순서 6. DNS 관리 서비스에서 레코드 수정
- avachat.kr의 경우, ‘가비아’ 사용
- 레코드 추가
- A레코드 / *.test.kr / (부하 분산기 IP)
