Certificate Authority Service로 리전별 Google 관리형 인증서 배포


이 튜토리얼에서는 인증서 관리자를 사용하여 CA 서비스가 있는 리전별 Google 관리형 인증서를 리전 외부 애플리케이션 부하 분산기나 리전 내부 애플리케이션 부하 분산기에 배포하는 방법을 설명합니다.

목표

이 튜토리얼에서는 다음 작업을 완료하는 방법을 보여줍니다.

  • 인증서 관리자를 사용하여 CA 서비스로 Google 관리형 인증서를 만듭니다.
  • 대상 HTTPS 프록시를 사용하여 지원되는 부하 분산기에 인증서를 배포합니다.

인증서 배포 프로세스에 대한 자세한 내용은 배포 개요를 참조하세요.

시작하기 전에

  1. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  2. 이 튜토리얼의 태스크를 완료하려면 다음 역할이 부여되었는지 확인하세요.

    • 인증서 관리자 소유자: 인증서 관리자 리소스를 만들고 관리하는 데 필요합니다.
    • Compute 부하 분산기 관리자: HTTPS 대상 프록시를 만들고 관리하는 데 필요합니다.
    • CA 서비스 관리자: CA 서비스 내에서 작업을 수행하는 데 필요합니다.

    자세한 내용은 다음을 참조하세요.

  3. Certificate Manager API를 사용 설정합니다.

  4. CA Service API를 사용 설정합니다.

  5. CA 풀을 만듭니다. 이 CA 풀에 CA를 1개 이상 만들어 사용 설정해야 합니다.

인증서 관리자와 CA 서비스 통합 구성

다음과 같이 CA 서비스와 통합하도록 인증서 관리자를 구성합니다.

  1. 대상 Google Cloud 프로젝트에서 인증서 관리자 서비스 계정을 만듭니다.

    gcloud beta services identity create \
        --service=certificatemanager.googleapis.com \
        --project=PROJECT_ID
    

    PROJECT_ID를 대상 Google Cloud 프로젝트의 ID로 바꿉니다.

이 명령어는 다음 예시와 같이 생성된 서비스 ID의 이름을 반환합니다.

service-520498234@gcp-sa-certificatemanager.iam.gserviceaccount.com
  1. 인증서 관리자 서비스 계정에 다음과 같이 대상 CA 풀 내에서 CA 서비스 인증서 요청자 역할을 부여합니다.

    gcloud privateca pools add-iam-policy-binding CA_POOL \
        --location LOCATION \
        --member "serviceAccount:SERVICE_ACCOUNT" \
        --role roles/privateca.certificateRequester
    

    다음을 바꿉니다.

    • CA_POOL: 대상 CA 풀의 ID입니다.
    • LOCATION: 대상 Google Cloud 위치입니다. CA 풀, 인증서 발급 구성 리소스, 관리형 인증서와 동일한 위치를 지정해야 합니다.
    • SERVICE_ACCOUNT: 1단계에서 만든 서비스 계정의 전체 이름입니다.
  2. CA 풀의 인증서 발급 구성 리소스를 만듭니다.

    gcloud beta certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \
        --ca-pool=CA_POOL \
        --location=LOCATION> \
        [--lifetime=CERTIFICATE_LIFETIME] \
        [--rotation-window-percentage=ROTATION_WINDOW_PERCENTAGE] \
        [--key-algorithm=KEY_ALGORITHM]
    

    다음을 바꿉니다.

    • ISSUANCE_CONFIG_NAME: 인증서 발급 구성 리소스의 고유한 이름입니다.
    • CA_POOL: 이 인증서 발급 구성 리소스에 할당할 CA 풀의 전체 리소스 경로와 이름입니다.
    • LOCATION: 대상 Google Cloud 위치입니다. CA 풀, 인증서 발급 구성 리소스, 관리형 인증서와 동일한 위치를 지정해야 합니다.
    • CERTIFICATE_LIFETIME: 인증서 수명(일)입니다. 유효한 값은 표준 기간 형식의 21~30일입니다. 기본값은 30일(30D)입니다. 이 설정은 선택사항입니다.
    • ROTATION_WINDOW_PERCENTAGE: 갱신이 트리거되는 인증서 수명 비율입니다. 기본값은 66%입니다. 인증서 발급 후 최소 7일이 지나고 만료되기 최소 7일 전에 인증서가 갱신되도록 인증서 수명과 관련하여 순환 기간 비율을 설정해야 합니다. 이 설정은 선택사항입니다.
    • KEY_ALGORITHM: 비공개 키를 생성하는 데 사용되는 암호화 알고리즘입니다. 유효한 값은 ecdsa-p256 또는 rsa-2048입니다. 기본값은 rsa-2048입니다. 이 설정은 선택사항입니다.

인증서 발급 구성 리소스에 대한 자세한 내용은 인증서 발급 구성 관리를 참조하세요.

리전별 Google 관리형 인증서 만들기

이전 단계에서 만든 인증서 발급 구성 리소스를 사용하여 CA 서비스에서 발급한 리전별 Google 관리형 인증서를 만듭니다.

gcloud

다음 명령어를 실행합니다.

gcloud beta certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAMES" \
    --issuance-config="ISSUANCE_CONFIG_NAME" \
    --location="LOCATION"

다음을 바꿉니다.

  • CERTIFICATE_NAME: 인증서의 고유한 이름입니다.
  • DOMAIN_NAMES: 쉼표로 구분된 이 인증서의 대상 도메인 목록입니다. 각 도메인 이름은 myorg.example.com과 같은 정규화된 도메인 이름이어야 합니다.
  • ISSUANCE_CONFIG_NAME: 대상 CA 풀을 참조하는 인증서 발급 구성 리소스의 이름입니다.
  • LOCATION: 대상 Google Cloud 위치입니다. CA 풀, 인증서 발급 구성 리소스, 관리형 인증서와 동일한 위치를 지정해야 합니다.

API

다음과 같이 certificates.create 메서드에 POST 요청을 전송하여 인증서를 만듭니다.

POST /v1/projects/PROJECT_ID/locations/LOCATION/certificates?certificate_id=CERTIFICATE_NAME"
{
 name: "/projects/example-project/locations/LOCATION/certificates/my-cert",
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "issuanceConfig": "ISSUANCE_CONFIG_NAME",
 },
}

다음을 바꿉니다.

  • PROJECT_ID: 대상 Google Cloud 프로젝트의 ID입니다.
  • LOCATION: 대상 Google Cloud 위치입니다. CA 풀, 인증서 발급 구성 리소스, 관리형 인증서와 동일한 위치를 지정해야 합니다.
  • CERTIFICATE_NAME: 인증서의 고유한 이름입니다.
  • DOMAIN_NAME: 이 인증서의 대상 도메인입니다. 도메인 이름은 example.com, www.example.com과 같은 정규화된 도메인 이름이어야 합니다.
  • ISSUANCE_CONFIG_NAME: 대상 CA 풀을 참조하는 인증서 발급 구성 리소스의 이름입니다.

인증서 배포 프로세스에 대한 개요는 배포 개요를 참조하세요.

인증서가 활성 상태인지 확인

다음 명령어를 사용하여 부하 분산기에 배포하기 전에 인증서 자체가 활성 상태인지 확인합니다. 인증서 상태가 ACTIVE로 변경되는 데 몇 분 정도 걸릴 수 있습니다.

gcloud beta certificate-manager certificates describe CERTIFICATE_NAME \
    --location=LOCATION

다음을 바꿉니다.

  • CERTIFICATE_NAME: 인증서의 고유한 이름입니다.
  • LOCATION: 대상 Google Cloud 위치입니다. CA 풀, 인증서 발급 구성 리소스, 관리형 인증서와 동일한 위치를 지정해야 합니다.

이 명령어는 다음과 유사한 출력을 반환합니다.

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
domains:
-   myorg.example.com
issuanceConfig: projects/myproject/locations/mylocation/issuanceConfigs/myissuanceConfig
state: ACTIVE
name: projects/myproject/locations/mylocation/certificates/mycertificate
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
  -   myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

부하 분산기에 리전별 Google 관리형 인증서 배포

리전별 Google 관리형 인증서를 배포하려면 HTTPS 대상 프록시를 만들고 여기에 인증서를 연결합니다.

HTTPS 대상 프록시 만들기

HTTPS 대상 프록시를 만들고 인증서를 연결하려면 다음 명령어를 실행합니다.

gcloud compute target-https-proxies create PROXY_NAME \
    --url-map=URL_MAP \
    --region=REGION \
    --certificate-manager-certificates=CERTIFICATE_NAME

다음을 바꿉니다.

  • PROXY_NAME: 프록시의 고유한 이름
  • URL_MAP: URL 맵의 이름입니다. 부하 분산기를 만들 때 URL 맵을 만들었습니다.
  • REGION: HTTPS 대상 프록시를 만들 리전입니다.
  • CERTIFICATE_NAME: 인증서의 이름입니다.

대상 프록시가 생성되었는지 확인하려면 다음 명령어를 실행합니다.

gcloud compute target-https-proxies list

전달 규칙 만들기

전달 규칙을 설정하고 부하 분산기 설정을 완료합니다.

삭제

이 튜토리얼의 변경사항을 되돌리려면 다음 단계를 완료합니다.

  1. Google 관리형 인증서를 삭제합니다.

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
        --location=LOCATION
    

다음을 바꿉니다.

  • CERTIFICATE_NAME: 인증서의 이름
  • LOCATION: 대상 Google Cloud 위치
  1. 인증서 발급 구성 리소스를 삭제합니다.

    gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
        --location=LOCATION
    

다음을 바꿉니다.

  • CERTIFICATE_NAME: 인증서의 이름
  • LOCATION: 대상 Google Cloud 위치
  1. CA 풀 삭제에 설명된 대로 CA 풀을 삭제합니다.

    인증서 발급 구성에서 참조된 CA 풀에서 사용 설정한 마지막 CA를 중지하거나 참조된 CA 풀을 완전히 삭제하려면 먼저 해당 CA 풀을 참조하는 모든 인증서 발급 구성을 삭제해야 합니다.

문제 해결

문제 해결 단계는 CA 서비스 인스턴스에서 발급한 인증서 관련 문제를 참조하세요.

다음 단계