부하 분산기 인증서를 인증서 관리자로 마이그레이션


이 튜토리얼에서는 Cloud Load Balancing 인증서를 인증서 관리자로 마이그레이션하는 방법을 보여줍니다. Cloud Load Balancing 인증서에 대한 자세한 내용은 Cloud Load Balancing 문서의 SSL 인증서 개요를 참고하세요.

다운타임 없이 Cloud Load Balancing 인증서를 마이그레이션하려면 먼저 마이그레이션할 인증서를 식별합니다. 그런 다음 Cloud Load Balancing 인증서와 동일한 수의 Google 관리 인증서를 만듭니다. 그런 다음 인증서를 단일 인증서 맵으로 통합하고 다른 부하 분산기에서 인증서 맵을 테스트합니다. 테스트에 성공하면 Cloud Load Balancing 인증서를 호스팅하는 대상 부하 분산기에 인증서 맵을 연결합니다.

지원되는 부하 분산기 목록을 보려면 인증서 관리자 개요를 참고하세요.

목표

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

  • 마이그레이션할 대상 부하 분산기의 인증서를 식별합니다.
  • Google 관리형 인증서를 만듭니다.
  • 인증서 맵 및 인증서 맵 항목을 만듭니다.
  • 다른 부하 분산기에서 인증서 맵을 테스트합니다.
  • 인증서 맵을 대상 부하 분산기에 연결합니다.

시작하기 전에

  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 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 APIs.

    Enable the APIs

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

    gcloud init

필요한 역할

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

  • 인증서 관리자 소유자 (roles/certificatemanager.owner): 인증서 관리자 리소스를 만들고 관리하는 데 필요합니다.
  • Compute 부하 분산기 관리자 (roles/compute.loadBalancerAdmin) 또는 Compute 네트워크 관리자 (roles/compute.networkAdmin): HTTPS 대상 프록시를 만들고 관리하는 데 필요합니다.
  • DNS 관리자 (roles/dns.admin): Cloud DNS를 DNS 솔루션으로 사용하려는 경우에 필요합니다.

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

마이그레이션할 인증서 식별

마이그레이션하려는 인증서를 식별하려면 다음 단계를 따르세요.

  1. 부하 분산기에서 대상 프록시의 이름을 확인합니다.

  2. 마이그레이션할 인증서를 식별합니다.

    대상 프록시에 연결된 인증서를 찾으려면 다음 명령어를 실행합니다.

    gcloud compute target-https-proxies describe TARGET_PROXY_NAME
    

    TARGET_PROXY_NAME을 대상 프록시의 이름으로 바꿉니다.

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

    creationTimestamp: '2021-10-06T04:05:07.520-07:00'
    fingerprint: c9Txdx6AfcM=
    id: '365692570234384780'
    kind: compute#targetHttpsProxy
    name: my-proxy
    selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/targetHttpsProxies/my-proxy
    sslCertificates:
    - https://www.googleapis.com/compute/v1/projects/my-project/global/sslCertificates/my-first-certificate
    - https://www.googleapis.com/compute/v1/projects/my-project/global/sslCertificates/my-second-certificate
    urlMap: https://www.googleapis.com/compute/v1/projects/my-project/global/urlMaps/my-map
    

    sslCertificates 필드에 나열된 인증서 이름을 확인합니다. 자세한 내용은 대상 프록시 개요를 참고하세요.

  3. 각 인증서의 세부정보 가져오기:

    gcloud compute ssl-certificates --project=PROJECT_ID describe LB_CERTIFICATE_NAME
    

    다음을 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
    • LB_CERTIFICATE_NAME: 부하 분산기 인증서의 이름입니다.

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

       certificate: |
         -----BEGIN CERTIFICATE-----
         MIIFYjCCBEqgAwIBAgIQd70NbNs2+RrqIQ/E8FjTDTANBgkqhkiG9w0BAQsFADBX
         MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEQMA4GA1UE
         CxMHUm9vdCBDQTEbMBkGA1UEAxMSR2xvYmFsU2lnbiBSb290IENBMB4XDTIwMDYx
         OTAwMDA0MloXDTI4MDEyODAwMDA0MlowRzELMAkGA1UEBhMCVVMxIjAgBgNVBAoT
         GUdvb2dsZSBUcnVzdCBTZXJ2aWNlcyBMTEMxFDASBgNVBAMTC0dUUyBSb290IFIx
         MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAthECix7joXebO9y/lD63
         ladAPKH9gvl9MgaCcfb2jH/76Nu8ai6Xl6OMS/kr9rH5zoQdsfnFl97vufKj6bwS
         iV6nqlKr+CMny6SxnGPb15l+8Ape62im9MZaRw1NEDPjTrETo8gYbEvs/AmQ351k
         KSUjB6G00j0uYODP0gmHu81I8E3CwnqIiru6z1kZ1q+PsAewnjHxgsHA3y6mbWwZ
         DrXYfiYaRQM9sHmklCitD38m5agI/pboPGiUU+6DOogrFZYJsuB6jC511pzrp1Zk
         j5ZPaK49l8KEj8C8QMALXL32h7M1bKwYUH+E4EzNktMg6TO8UpmvMrUpsyUqtEj5
         cuHKZPfmghCN6J3Cioj6OGaK/GP5Afl4/Xtcd/p2h/rs37EOeZVXtL0m79YB0esW
         CruOC7XFxYpVq9Os6pFLKcwZpDIlTirxZUTQAs6qzkm06p98g7BAe+dDq6dso499
         iYH6TKX/1Y7DzkvgtdizjkXPdsDtQCv9Uw+wp9U7DbGKogPeMa3Md+pvez7W35Ei
         Eua++tgy/BBjFFFy3l3WFpO9KWgz7zpm7AeKJt8T11dleCfeXkkUAKIAf5qoIbap
         sZWwpbkNFhHax2xIPEDgfg1azVY80ZcFuctL7TlLnMQ/0lUTbiSw1nH69MG6zO0b
         9f6BQdgAmD06yK56mDcYBZUCAwEAAaOCATgwggE0MA4GA1UdDwEB/wQEAwIBhjAP
         BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTkrysmcRorSCeFL1JmLO/wiRNxPjAf
         BgNVHSMEGDAWgBRge2YaRQ2XyolQL30EzTSo//z9SzBgBggrBgEFBQcBAQRUMFIw
         JQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnBraS5nb29nL2dzcjEwKQYIKwYBBQUH
         MAKGHWh0dHA6Ly9wa2kuZ29vZy9nc3IxL2dzcjEuY3J0MDIGA1UdHwQrMCkwJ6Al
         oCOGIWh0dHA6Ly9jcmwucGtpLmdvb2cvZ3NyMS9nc3IxLmNybDA7BgNVHSAENDAy
         MAgGBmeBDAECATAIBgZngQwBAgIwDQYLKwYBBAHWeQIFAwIwDQYLKwYBBAHWeQIF
         AwMwDQYJKoZIhvcNAQELBQADggEBADSkHrEoo9C0dhemMXoh6dFSPsjbdBZBiLg9
         NR3t5P+T4Vxfq7vqfM/b5A3Ri1fyJm9bvhdGaJQ3b2t6yMAYN/olUazsaL+yyEn9
         WprKASOshIArAoyZl+tJaox118fessmXn1hIVw41oeQa1v1vg4Fv74zPl6/AhSrw
         9U5pCZEt4Wi4wStz6dTZ/CLANx8LZh1J7QJVj2fhMtfTJr9w4z30Z209fOU0iOMy
         +qduBmpvvYuR7hZL6Dupszfnw0Skfths18dG9ZKb59UhvmaSGZRVbNQpsg3BZlvi
         d0lIKO2d1xozclOzgjXPYovJJIultzkMu34qQb9Sz/yilrbCgj8=
         -----END CERTIFICATE-----
       creationTimestamp: '2021-05-06T04:39:21.736-07:00'
       expireTime: '2022-06-07T01:10:34.000-07:00'
       id: '6422259403966690822'
       kind: compute#sslCertificate
       managed:
          domainStatus:
          a.my-domain1.example.com: ACTIVE
          b.my-domain2.example.com: ACTIVE
          domains:
          - a.my-domain1.example.com
          - b.my-domain2.example.com
          status: ACTIVE
       name: my-certificate
       selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/sslCertificates/my-certificate
       subjectAlternativeNames:
       - a. my-domain1.example.com
       - b. my-domain2.example.com
       type: MANAGED
    

Google 관리형 인증서 만들기

부하 분산기 인증서와 동일한 수의 Google 관리형 인증서를 만듭니다. 전역 또는 기존 부하 분산기의 경우 전역 인증서를 만들고, 리전 부하 분산기의 경우 리전 인증서를 만들고, 리전 간 부하 분산기의 경우 리전 간 인증서를 만듭니다. 인증서를 만들기 전에 DNS 승인을 만들고 도메인의 공신력 있는 DNS 영역에 CNAME 레코드를 추가합니다.

DNS 승인을 사용하여 Google 관리형 인증서(권장) 또는 자체 관리형 인증서를 만들 수 있습니다.

이 섹션에는 전역 Google 관리형 인증서를 만드는 단계와 명령어가 나와 있습니다. 리전별 또는 교차 리전 Google 관리형 인증서를 만들려면 Google 관리형 인증서 만들기를 참고하세요.

DNS 승인 만들기

DNS 승인은 단일 도메인 이름에만 적용됩니다. 대상 인증서와 함께 사용할 각 도메인 이름에 대해 별도의 DNS 승인을 만들어야 합니다.

*.myorg.example.com과 같이 와일드 카드 인증서에 DNS 승인을 만드는 경우 상위 도메인에 대한 DNS 승인을 구성합니다(예: myorg.example.com).

콘솔

인증서를 만들 때 DNS 승인을 만들거나 기존 DNS 승인을 연결할 수 있습니다. 자세한 내용은 DNS 승인을 참조하는 Google 관리형 인증서 만들기를 참고하세요.

gcloud

DNS 승인을 만들려면 certificate-manager dns-authorizations create 명령어를 사용합니다.

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME"

다음을 바꿉니다.

  • AUTHORIZATION_NAME: DNS 승인 이름입니다.
  • DOMAIN_NAME: 이 DNS 승인을 만들 대상 도메인의 이름입니다. 도메인 이름은 myorg.example.com과 같은 정규화된 도메인 이름이어야 합니다.

전역 Google 관리형 인증서는 FIXED_RECORD를 기본 DNS 승인 유형으로 사용합니다. PER_PROJECT_RECORD DNS 승인을 사용하려면 다음 명령어를 실행합니다.

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME" \
    --type="PER_PROJECT_RECORD"

DNS 승인을 만든 후 certificate-manager dns-authorizations describe 명령어를 사용하여 확인합니다.

gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME \

출력은 다음과 비슷합니다. 출력에서 dnsResourceRecord 줄을 찾아 CNAME 레코드 (data, name, type)를 가져와 DNS 구성에 추가합니다.

createTime: '2022-01-14T13:35:00.258409106Z'
dnsResourceRecord:
  data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog.
  name: _acme-challenge.myorg.example.com.
  type: CNAME
domain: myorg.example.com
name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization
updateTime: '2022-01-14T13:35:01.571086137Z'

Terraform

DNS 승인을 만들려면 google_certificate_manager_dns_authorization 리소스를 사용하면 됩니다.

resource "google_certificate_manager_dns_authorization" "default" {
  name        = "${local.name}-dnsauth-${random_id.tf_prefix.hex}"
  description = "The default dns auth"
  domain      = local.domain
  labels = {
    "terraform" : true
  }
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

API

DNS 승인을 만들려면 dnsAuthorizations.create 메서드에 POST 요청을 실행합니다.

POST /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME"
{
  "domain": "DOMAIN_NAME",
  "type": "PER_PROJECT_RECORD" //optional
}

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
  • AUTHORIZATION_NAME: DNS 승인 이름입니다.
  • DOMAIN_NAME: 이 DNS 승인을 만들 대상 도메인의 이름입니다. 도메인 이름은 myorg.example.com과 같은 정규화된 도메인 이름이어야 합니다.

DNS 승인을 참조하는 Google 관리형 인증서 만들기

이전 단계에서 만든 DNS 승인을 참조하는 전역 Google 관리형 인증서를 만들려면 다음을 실행합니다.

콘솔

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

    인증서 관리자로 이동

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

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

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

  5. 위치에서 전역을 선택합니다.

  6. 범위에서 기본값을 선택합니다.

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

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

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

  10. 승인 유형에서 DNS 승인을 선택합니다.

    페이지에는 도메인 이름의 DNS 승인이 표시됩니다. 도메인 이름에 연결된 DNS 승인이 없는 경우 다음 단계에 따라 승인을 만드세요.

    1. 누락된 DNS 승인 만들기를 클릭합니다.
    2. DNS 승인 이름 필드에 DNS 승인 이름을 지정합니다. 기본 DNS 승인 유형은 FIXED_RECORD입니다. 프로젝트별 DNS 승인을 사용하려면 프로젝트별 승인 체크박스를 선택합니다.
    3. DNS 승인 만들기를 클릭합니다.
  11. 라벨 필드에서 인증서에 연결할 라벨을 지정합니다. 라벨을 추가하려면 라벨 추가를 클릭하고 라벨의 키와 값을 지정합니다.

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

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

gcloud

DNS 승인을 사용하여 전역 Google 관리형 인증서를 만들려면 dns-authorizations 플래그와 함께 certificate-manager certificates create 명령어를 실행합니다.

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAME, *.DOMAIN_NAME" \
    --dns-authorizations="AUTHORIZATION_NAMES"

다음을 바꿉니다.

  • CERTIFICATE_NAME: 인증서의 이름입니다.
  • DOMAIN_NAME: 대상 도메인 이름입니다. 도메인 이름은 myorg.example.com과 같은 정규화된 도메인 이름이거나 *.myorg.example.com과 같은 와일드 카드 도메인 이름이어야 합니다. 별표 점 프리픽스 (*.)는 와일드 카드 인증서를 나타냅니다.
  • AUTHORIZATION_NAMES: 인증서에 만든 DNS 승인의 이름을 쉼표로 구분한 목록입니다.

Terraform

google_certificate_manager_certificate 리소스를 사용합니다.

resource "google_certificate_manager_certificate" "root_cert" {
  name        = "${local.name}-rootcert-${random_id.tf_prefix.hex}"
  description = "The wildcard cert"
  managed {
    domains = [local.domain, "*.${local.domain}"]
    dns_authorizations = [
      google_certificate_manager_dns_authorization.default.id
    ]
  }
  labels = {
    "terraform" : true
  }
}

API

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

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "dnsAuthorizations": [
   "projects/PROJECT_ID/locations/global/dnsAuthorizations/AUTHORIZATION_NAME",
  ],
 }
}

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
  • CERTIFICATE_NAME: 인증서의 이름입니다.
  • DOMAIN_NAME: 대상 도메인 이름입니다. 도메인 이름은 myorg.example.com과 같은 정규화된 도메인 이름이거나 *.myorg.example.com과 같은 와일드 카드 도메인 이름이어야 합니다. 별표 점 프리픽스(*.)는 와일드 카드 인증서를 나타냅니다.
  • AUTHORIZATION_NAMES: DNS 승인 이름을 쉼표로 구분한 목록입니다.

DNS 구성에 CNAME 레코드 추가

서드 파티 DNS 솔루션을 사용하여 DNS를 관리하는 경우 해당 문서를 참고하여 DNS 구성에 CNAME 레코드를 추가합니다. Google Cloud를 사용하여 DNS를 관리하는 경우 이 섹션의 단계를 완료합니다.

콘솔

레코드 모음을 만들려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 DNS 영역 페이지로 이동합니다.

    Cloud DNS 영역으로 이동

  2. 레코드를 추가할 DNS 영역의 이름을 클릭합니다.

  3. 영역 세부정보 페이지에서 표준 추가를 클릭합니다.

  4. 레코드 모음 만들기 페이지의 DNS 이름 필드에 DNS 영역의 하위 도메인을 입력합니다.

    하위 도메인 이름을 입력할 때 DNS 이름 필드에 표시된 비활성화된 텍스트를 포함한 하위 도메인 이름이 gcloud certificate-manager dns-authorizations describe 명령어의 출력에 표시된 dnsResourceRecord.name 필드의 전체 값과 일치하는지 확인합니다.

    다음 예를 참조하세요.

    • dnsResourceRecord.name 필드 값이 _acme-challenge.myorg.example.com.이고 DNS 이름 필드의 비활성화된 텍스트가 .example.com.인 경우 _acme-challenge.myorg를 입력합니다.

    • dnsResourceRecord.name 필드 값이 _acme-challenge.myorg.example.com.이고 DNS 이름 필드의 비활성화된 텍스트가 .myorg.example.com.이면 _acme-challenge를 입력합니다.

    • dnsResourceRecord.name 필드의 값이 _acme-challenge_ujmmovf2vn55tgye.myorg.example.com.이고 DNS 이름 필드의 비활성화된 텍스트가 .myorg.example.com.이면 _acme-challenge_ujmmovf2vn55tgye를 입력합니다.

  5. 리소스 레코드 유형 필드에서 CNAME을 선택합니다.

  6. TTL 필드에 리소스 레코드가 캐시될 수 있는 기간인 리소스 레코드의 TTL(수명)에 대한 양수 숫자 값을 입력합니다.

  7. TTL 단위 목록에서 시간 단위를 선택합니다(예: 30 minutes).

  8. 표준 이름 필드에 gcloud certificate-manager dns-authorizations describe 명령어의 출력에 표시된 dnsResourceRecord.data 필드의 전체 값을 입력합니다.

  9. 추가 정보를 입력하려면 항목 추가를 클릭합니다.

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

gcloud

DNS 승인을 만들면 gcloud CLI 명령어에서 해당 CNAME 레코드를 반환합니다. 대상 도메인의 DNS 영역에 있는 DNS 구성에 CNAME 레코드를 추가하려면 다음 단계를 따르세요.

  1. DNS 레코드 트랜잭션을 시작합니다.

    gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
    

    DNS_ZONE_NAME을 대상 DNS 영역 이름으로 바꿉니다.

  2. 대상 DNS 영역에 CNAME 레코드를 추가합니다.

    gcloud dns record-sets transaction add CNAME_RECORD \
        --name="VALIDATION_SUBDOMAIN_NAME.DOMAIN_NAME." \
        --ttl="30" \
        --type="CNAME" \
        --zone="DNS_ZONE_NAME"
    

    다음을 바꿉니다.

    • CNAME_RECORD: 해당 DNS 승인을 만든 Google Cloud CLI 명령어에서 반환한 CNAME 레코드의 전체 데이터 값입니다.
    • VALIDATION_SUBDOMAIN_NAME: DNS 영역의 접두사 하위 도메인(예: _acme-challenge) DNS 승인 만들기에 설명된 대로 gcloud certificate-manager dns-authorizations describe 명령어 로그에서 이름을 복사할 수 있습니다.
    • DOMAIN_NAME: 대상 도메인 이름입니다.도메인 이름은 myorg.example.com과 같은 정규화된 도메인 이름이어야 합니다. 대상 도메인 이름 뒤에 후행 마침표도 포함해야 합니다.
    • DNS_ZONE_NAME: 대상 DNS 영역 이름입니다.

    아래 예시를 참조하세요.

    gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \
        --name="_acme-challenge.myorg.example.com." \
        --ttl="30" \
        --type="CNAME" \
        --zone="myorg-example-com"
    
  3. DNS 레코드 트랜잭션을 실행하여 변경사항을 저장합니다.

    gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
    

    DNS_ZONE_NAME을 대상 DNS 영역 이름으로 바꿉니다.

Terraform

CNAME 레코드를 DNS 구성에 추가하려면 google_dns_record_set 리소스를 사용하면 됩니다.

resource "google_dns_record_set" "cname" {
  name         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].name
  managed_zone = google_dns_managed_zone.default.name
  type         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].type
  ttl          = 300
  rrdatas      = [google_certificate_manager_dns_authorization.default.dns_resource_record[0].data]
}

인증서 상태 확인

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

콘솔

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

    인증서 관리자로 이동

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

gcloud

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

gcloud certificate-manager certificates describe CERTIFICATE_NAME

CERTIFICATE_NAME을 대상 Google 관리형 인증서의 이름으로 바꿉니다.

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

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  authorizationAttemptInfo:
  - domain: myorg.example.com
    state: AUTHORIZED
  dnsAuthorizations:
    - projects/myProject/locations/global/dnsAuthorizations/myCert
  domains:
  - myorg.example.com
  state: ACTIVE
name: projects/myProject/locations/global/certificates/myCert
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
  -   myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

몇 시간 후에도 인증서 상태가 ACTIVE가 아니면 DNS 구성에 CNAME 레코드를 올바르게 추가했는지 확인합니다.

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

인증서 맵 만들기

전역 외부 애플리케이션 부하 분산기에 인증서를 배포하려면 인증서 맵을 만듭니다.

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

다음을 바꿉니다.

  • CERTIFICATE_MAP_NAME: 인증서 맵의 이름입니다.

인증서 맵 항목 만들기

전역 외부 애플리케이션 부하 분산기에 인증서를 배포하려면 인증서 맵 항목을 만듭니다.

마이그레이션하려는 각 인증서에 대해 다음과 같이 해당 인증서를 참조하는 인증서 맵 항목을 만듭니다.

  1. 인증서 세부정보를 가져옵니다.

  2. 로그에서 subjectAlternativeNames 필드에 나열된 각 도메인에 대해 해당 도메인을 포함하는 인증서 맵 항목을 만듭니다. 단일 도메인에 두 개 이상의 인증서가 적용되는 경우 하나의 인증서 맵 항목만 만들고 해당 도메인을 포함하는 유효한 인증서를 사용하면 됩니다.

    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 create CERTIFICATE_MAP_ENTRY_NAME \
       --map="CERTIFICATE_MAP_NAME" \
       --certificates="CERTIFICATE_NAMES" \
       --set-primary
    

    다음을 바꿉니다.

    • CERTIFICATE_MAP_ENTRY_NAME: 인증서 맵 항목의 이름
    • CERTIFICATE_MAP_NAME: 인증서 맵 항목이 연결된 인증서 맵의 이름입니다.
    • CERTIFICATE_NAMES: 이 인증서 맵 항목과 연결할 인증서의 이름을 쉼표로 구분한 목록입니다.
  4. 만든 각 인증서 맵 항목의 활성 상태를 확인하려면 다음 명령어를 실행합니다.

     gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \
         --map="CERTIFICATE_MAP_NAME"
    

    다음을 바꿉니다.

    • CERTIFICATE_MAP_ENTRY_NAME: 인증서 맵 항목의 이름
    • CERTIFICATE_MAP_NAME: 인증서 맵 항목이 연결된 인증서 맵의 이름입니다.

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

       certificates:
       - projects/my-project/locations/global/certificates/my-certificate
       createTime: '2021-09-06T10:01:56.229472109Z'
       hostname: example.com
       name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/my-map-entry
       state: ACTIVE
       updateTime: '2021-09-06T10:01:58.277031787Z'
    

선택사항: 새 부하 분산기에서 구성 테스트

다운타임을 최소화하려면 프로덕션 트래픽을 제공하지 않는 새 부하 분산기에서 새로 구성된 인증서 맵을 테스트하는 것이 좋습니다. 이렇게 하면 프로덕션 환경에서 마이그레이션을 진행하기 전에 오류를 감지하고 해결할 수 있습니다.

다음과 같이 구성을 테스트합니다.

  1. 새 대상 프록시를 사용하여 전역 부하 분산기를 만듭니다. 부하 분산기를 만들려면 다음 페이지를 참고하세요.

  2. 새 부하 분산기의 대상 프록시에 인증서 맵을 연결합니다.

    gcloud compute target-https-proxies create TEST_PROXY_NAME \
        --certificate-map="CERTIFICATE_MAP_NAME" \
        --global
    

    다음을 바꿉니다.

    • TEST_PROXY_NAME: 테스트 대상 프록시의 이름입니다.
    • CERTIFICATE_MAP_NAME: 인증서 맵 항목과 연결된 인증서를 참조하는 인증서 맵의 이름
  3. 마이그레이션에 포함된 각 대상 도메인에 대해 새 부하 분산기의 IP 주소에서 도메인에 대한 연결을 테스트합니다.

    openssl s_client -showcerts -servername DOMAIN_NAME -connect IP_ADDRESS:443
    

    다음을 바꿉니다.

    • DOMAIN_NAME: 대상 도메인 이름입니다.
    • IP_ADDRESS: 새 부하 분산기의 IP 주소입니다.

    연결 테스트에 대한 자세한 내용은 OpenSSL을 사용한 테스트를 참조하세요.

테스트 환경 삭제

이전 단계에서 만든 테스트 환경을 삭제합니다.

부하 분산기 삭제에 설명된 대로 테스트 부하 분산기를 삭제합니다.

이전 단계에서 만든 인증서, 인증서 맵 또는 인증서 맵 항목은 삭제하지 마세요.

대상 부하 분산기에 새 인증서 맵 적용

새 인증서 구성을 테스트하고 유효한지 확인한 후 다음 단계에 따라 대상 부하 분산기 (인증서를 호스팅하는 부하 분산기)에 새 인증서 맵을 적용합니다.

  1. 전역 부하 분산기를 사용하는 경우 새 부하 분산기의 대상 프록시에 인증서 맵을 연결합니다.

    gcloud compute target-https-proxies update TARGET_PROXY_NAME \
        --certificate-map="CERTIFICATE_MAP_NAME" \
        --global
    

    다음을 바꿉니다.

    • TARGET_PROXY_NAME: 대상 프록시 이름
    • CERTIFICATE_MAP_NAME: 인증서 맵 항목과 연결된 인증서를 참조하는 인증서 맵의 이름
  2. 구성 변경사항이 적용되고 부하 분산기에서 새 인증서를 제공하기 시작할 때까지 기다립니다. 이 작업은 일반적으로 몇 분 정도 걸리지만 최대 30분 정도 걸릴 수 있습니다.

인증서가 이전되었습니다. 트래픽에 문제가 있는 경우 대상 프록시에서 새 인증서 맵을 분리합니다. 이렇게 하면 부하 분산기가 원래 구성으로 되돌아갑니다.

다음 단계