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


이 튜토리얼에서는 인증서 관리자를 사용하여 Certificate Authority Service가 포함된 리전별 Google 관리형 인증서를 리전 외부 애플리케이션 부하 분산기 또는 리전 내부 애플리케이션 부하 분산기에 배포하는 방법을 보여줍니다.

전역 외부 부하 분산기 또는 리전 간 부하 분산기에 배포하려면 다음을 참고하세요.

목표

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

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

시작하기 전에

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, Certificate Manager, Certificate Authority APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Compute Engine, Certificate Manager, Certificate Authority APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. CA Service API를 사용 설정합니다.
  13. CA 풀을 만듭니다. 이 CA 풀에 CA를 1개 이상 만들어 사용 설정해야 합니다.

이 튜토리얼의 단계를 따르기 전에 다음 사항을 기록해 두어야 합니다.

  • Certificate Authority Service로 만드는 인증서는 공개적으로 신뢰할 수 없습니다. 공개적으로 신뢰할 수 있는 인증서를 발급하려면 DNS 승인 또는 부하 분산기 승인을 사용하여 인증서를 만드세요.
  • 대상 CA 풀에 인증서 발급 정책이 적용되면 다음 이유 중 하나로 인해 인증서 프로비저닝이 실패할 수 있습니다.

    • 인증서 발급 정책이 요청된 인증서를 차단했습니다. 이 경우 인증서가 발급되지 않아 비용이 청구되지 않습니다.
    • 정책이 인증서 관리자에서 지원하지 않는 인증서에 변경사항을 적용했습니다. 이 경우 인증서 관리자와 완벽하게 호환되지 않더라도 인증서가 발급되었으므로 요금이 청구됩니다.
  • 리전별 CA 풀에서 발급된 Google 관리형 TLS 인증서는 전역이며 모든 리전에서 사용할 수 있습니다.

필요한 역할

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

  • 인증서 관리자 소유자 (roles/certificatemanager.owner): 인증서 관리자 리소스를 만들고 관리하는 데 필요합니다.
  • Compute 부하 분산기 관리자 (roles/compute.loadBalancerAdmin) 또는 Compute 네트워크 관리자 (roles/compute.networkAdmin): HTTPS 대상 프록시를 만들고 관리하는 데 필요합니다.
  • CA 서비스 관리자 (roles/privateca.admin): CA 서비스 내에서 작업을 수행하는 데 필요합니다.

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

부하 분산기 만들기

이 튜토리얼에서는 부하 분산기의 백엔드, 상태 확인, 백엔드 서비스, URL 맵을 이미 만들고 구성했다고 가정합니다. URL 맵 이름은 이 튜토리얼의 후반부에서 필요하므로 URL 맵 이름을 기록해 둡니다.

인증서 관리자와 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
    
  2. 인증서 관리자 서비스 계정에 대상 CA 풀 내에서 CA 서비스 인증서 요청자 역할(roles/privateca.certificateRequester)을 부여합니다.

    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 위치입니다.
    • SERVICE_ACCOUNT: 1단계에서 만든 서비스 계정의 전체 이름입니다.
  3. CA 풀의 인증서 발급 구성 리소스를 만듭니다.

    콘솔

    1. Google Cloud 콘솔에서 인증서 관리자 페이지로 이동합니다.

      인증서 관리자로 이동

    2. 발급 구성 탭에서 만들기를 클릭합니다.

    3. 이름 필드에 인증서 발급 구성의 고유한 이름을 입력합니다.

    4. 선택사항: 설명 필드에 발급 구성에 대한 설명을 입력합니다.

    5. 위치리전을 선택합니다.

      리전에 인증서 및 CA 풀과 동일한 리전을 선택합니다.

    6. 선택사항: 전체 기간 필드에 발급된 인증서의 전체 기간을 일 단위로 지정합니다. 값은 21~30일(포함) 사이여야 합니다.

    7. 선택사항: 순환 기간 비율에서 갱신 프로세스가 시작될 때 인증서 수명 비율을 지정합니다. 유효한 값 범위를 찾으려면 전체 기간 및 순환 기간 비율을 참고하세요.

    8. 선택사항: 키 알고리즘 목록에서 비공개 키를 생성할 때 사용할 키 알고리즘을 선택합니다.

    9. CA 풀 목록에서 이 인증서 발급 구성 리소스에 할당할 CA 풀의 이름을 선택합니다.

    10. 라벨 필드에서 인증서에 연결할 라벨을 지정합니다. 라벨을 추가하려면 라벨 추가를 클릭하고 라벨의 키와 값을 지정합니다.

    11. 만들기를 클릭합니다.

    gcloud

    gcloud certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \
        --ca-pool=CA_POOL \
        --location=LOCATION
    

    다음을 바꿉니다.

    • ISSUANCE_CONFIG_NAME: 인증서 발급 구성 리소스의 이름입니다.
    • CA_POOL: 이 인증서 발급 구성 리소스에 할당할 CA 풀의 전체 리소스 경로와 이름입니다.
    • LOCATION: 대상 Google Cloud 위치입니다. CA 풀 및 인증서와 동일한 위치를 지정해야 합니다.

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

CA 서비스 인스턴스에서 발급한 Google 관리 인증서 만들기

CA 서비스 인스턴스에서 발급한 Google 관리형 인증서를 만들려면 다음 단계를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 인증서 관리자 페이지로 이동합니다.

    인증서 관리자로 이동

  2. 인증서 탭에서 인증서 추가를 클릭합니다.

  3. 인증서 이름 필드에 인증서의 고유한 이름을 입력합니다.

  4. 선택사항: 설명 필드에 인증서에 대한 설명을 입력합니다. 설명을 통해 인증서를 식별할 수 있습니다.

  5. 위치리전을 선택합니다.

  6. 리전 목록에서 리전을 선택합니다.

  7. 인증서 유형에서 Google 관리형 인증서 만들기를 선택합니다.

  8. 인증 기관 유형에서 비공개를 선택합니다.

  9. 도메인 이름 필드에 인증서의 도메인 이름을 쉼표로 구분하여 입력합니다. 각 도메인 이름은 myorg.example.com과 같은 정규화된 도메인 이름이어야 합니다.

  10. 인증서 발급 구성 선택에서 대상 CA 풀을 참조하는 인증서 발급 구성 리소스의 이름을 선택합니다.

  11. 라벨 필드에서 인증서에 연결할 라벨을 지정합니다. 라벨을 추가하려면 라벨 추가를 클릭하고 라벨의 키와 값을 지정합니다.

  12. 만들기를 클릭합니다.

    새 인증서가 인증서 목록에 표시됩니다.

gcloud

Certificate Authority Service로 리전별 Google 관리형 인증서를 만들려면 issuance-config 플래그와 함께 certificate-manager certificates create 명령어를 사용합니다.

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

다음을 바꿉니다.

  • CERTIFICATE_NAME: 인증서의 이름입니다.
  • DOMAIN_NAME: 대상 도메인 이름입니다. 도메인 이름은 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: 대상 도메인 이름입니다. 도메인 이름은 myorg.example.com과 같은 정규화된 도메인 이름이어야 합니다.
  • ISSUANCE_CONFIG_NAME: 대상 CA 풀을 참조하는 인증서 발급 구성 리소스의 이름입니다.

인증서 상태 확인

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

콘솔

  1. Google Cloud 콘솔에서 인증서 관리자 페이지로 이동합니다.

    인증서 관리자로 이동

  2. 인증서 탭에서 인증서의 상태 열을 확인합니다.

gcloud

인증서 상태를 확인하려면 다음 명령어를 실행합니다.

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

다음을 바꿉니다.

  • CERTIFICATE_NAME: 인증서의 이름입니다.
  • LOCATION: Google 관리형 인증서를 만든 대상 Google Cloud 위치입니다.

출력은 다음과 비슷합니다.

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

추가 문제 해결 단계는 인증서 관리자 문제 해결을 참고하세요.

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

리전별 Google 관리형 인증서를 배포하려면 인증서를 대상 프록시에 직접 연결합니다.

대상 프록시에 인증서 직접 연결

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

인증서 맵을 새 대상 프록시에 연결하려면 gcloud compute target-https-proxies create 명령어를 사용합니다.

gcloud compute target-https-proxies create PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME" \
    --url-map=URL_MAP \
    --region=LOCATION

다음을 바꿉니다.

  • PROXY_NAME: 대상 프록시 이름
  • URL_MAP: URL 맵의 이름입니다. 부하 분산기를 만들 때 URL 맵을 만들었습니다.
  • LOCATION: HTTPS 대상 프록시를 만들 대상 Google Cloud 위치입니다.
  • CERTIFICATE_NAME: 인증서의 이름입니다.

인증서 맵을 기존 대상 HTTPS 프록시에 연결하려면 gcloud compute target-https-proxies update 명령어를 사용합니다. 기존 대상 프록시의 이름을 모르는 경우 대상 프록시 페이지로 이동하여 대상 프록시의 이름을 확인합니다.

gcloud compute target-https-proxies update PROXY_NAME \
    --region=LOCATION \
    --certificate-manager-certificates=CERTIFICATE_NAME

대상 프록시를 만들거나 업데이트한 후 다음 명령어를 실행하여 확인합니다.

gcloud compute target-https-proxies list

CA 서비스에서 발급한 인증서 문제 해결

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

삭제

이 튜토리얼에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 관련 리소스를 삭제해야 합니다.

  1. 부하 분산기 및 리소스를 삭제합니다.

    부하 분산 설정 삭제를 참조하세요.

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

    콘솔

    1. Google Cloud 콘솔에서 인증서 관리자 페이지로 이동합니다.

      인증서 관리자로 이동

    2. 인증서 탭에서 인증서의 체크박스를 선택합니다.

    3. 삭제를 클릭합니다.

    4. 표시되는 대화상자에서 삭제를 클릭하여 확인합니다.

    gcloud

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

    다음을 바꿉니다.

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

    콘솔

    1. Google Cloud 콘솔에서 인증서 관리자 페이지로 이동합니다.

      인증서 관리자로 이동

    2. 발급 구성 탭에서 발급 구성 리소스의 체크박스를 선택합니다.

    3. 삭제를 클릭합니다.

    4. 표시되는 대화상자에서 삭제를 클릭하여 확인합니다.

    gcloud

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

    다음을 바꿉니다.

    • ISSUANCE_CONFIG_NAME: 대상 CA 풀을 참조하는 인증서 발급 구성 리소스의 이름입니다.
    • LOCATION: 대상 Google Cloud 위치입니다.
  4. CA 풀을 삭제합니다.

    CA 풀을 삭제하거나 인증서 발급 구성에서 참조하는 CA 풀에서 마지막으로 사용 설정된 CA를 사용 중지하려면 CA 풀을 참조하는 모든 인증서 발급 구성을 삭제합니다. 자세한 내용은 CA 풀 삭제를 참고하세요.

다음 단계