이 튜토리얼에서는 Certificate Authority Service를 예시로 사용하여 Google 관리형 인증서를 사용하는 인증서 배포 프로세스를 안내합니다.
다음 부하 분산기에서는 CA 서비스를 통해 Google 관리 인증서를 지원합니다.
- 전역 외부 애플리케이션 부하 분산기
- 기본 애플리케이션 부하 분산기
- 리전 간 내부 애플리케이션 부하 분산기
- 전역 외부 프록시 네트워크 부하 분산기
대상 CA 풀에 인증서 발급 정책이 적용되면 다음 이유 중 하나로 인해 인증서 프로비저닝이 실패할 수 있습니다.
- 인증서 발급 정책이 요청된 인증서를 차단했습니다. 이 경우 인증서가 발급되지 않아 비용이 청구되지 않습니다.
- 정책이 인증서 관리자에서 지원하지 않는 인증서에 변경사항을 적용했습니다. 이 경우 인증서 관리자와 완벽하게 호환되지 않더라도 인증서가 발급된 이후 요금이 계속 청구됩니다.
이 튜토리얼의 단계에 따라 발급된 인증서는 공개적으로 신뢰할 수 없습니다. 공개적으로 신뢰할 수 있는 인증서를 발급하려면 다음 튜토리얼 중 하나의 단계를 따르세요.
기존 인증서를 인증서 관리자로 마이그레이션하려면 인증서 관리자로 인증서 마이그레이션의 단계를 따르세요.
리전별 CA 풀을 사용하여 Google 관리형 TLS 인증서를 발급하더라도 인증서 자체는 전역이며 모든 리전에서 사용할 수 있습니다.
목표
이 튜토리얼에서는 다음 작업을 완료하는 방법을 보여줍니다.
- 인증서 관리자를 사용하여 CA 서비스로 Google 관리형 인증서를 만듭니다.
- 대상 HTTPS 프록시를 사용하여 지원되는 부하 분산기에 인증서를 배포합니다.
인증서 배포 프로세스에 대한 자세한 내용은 배포 개요를 참조하세요.
시작하기 전에
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
이 튜토리얼의 태스크를 완료하려면 다음 역할이 부여되었는지 확인하세요.
- 인증서 관리자 소유자: 인증서 관리자 리소스를 만들고 관리하는 데 필요합니다.
- Compute 부하 분산기 관리자 또는 Compute 네트워크 관리자: HTTPS 대상 프록시를 만들고 관리하는 데 필요합니다.
- Certificate Authority Service 관리자: CA 서비스 내에서 작업을 수행하는 데 필요합니다.
자세한 내용은 다음을 참조하세요.
- 인증서 관리자의 역할 및 권한
- Compute Engine의 Compute Engine IAM 역할 및 권한
- CA 서비스의 권한 및 역할
CA 풀을 만듭니다. 이 CA 풀에 CA를 1개 이상 만들어 사용 설정해야 합니다.
인증서 관리자와 CA 서비스 통합 구성
다음과 같이 CA 서비스와 통합하도록 인증서 관리자를 구성합니다.
다음 명령어를 사용하여 대상 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
인증서 관리자 서비스 계정에 다음과 같이 대상 CA 풀 내에서 인증서 요청자 역할을 부여합니다.
gcloud privateca pools add-iam-policy-binding CA_POOL \ --location REGION \ --member "serviceAccount:SERVICE_ACCOUNT" \ --role roles/privateca.certificateRequester
다음을 바꿉니다.
CA_POOL
: 대상 CA 풀의 ID입니다.REGION
: 대상 Google Cloud 리전입니다.SERVICE_ACCOUNT
: 1단계에서 만든 서비스 계정의 전체 이름입니다.
CA 풀의 인증서 발급 구성 리소스를 만듭니다.
gcloud certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \ --ca-pool=CA_POOL \ [--lifetime=CERTIFICATE_LIFETIME] \ [--rotation-window-percentage=ROTATION_WINDOW_PERCENTAGE] \ [--key-algorithm=KEY_ALGORITHM]
다음을 바꿉니다.
ISSUANCE_CONFIG_NAME
: 인증서 발급 구성 리소스의 고유한 이름입니다.CA_POOL
: 이 인증서 발급 구성 리소스에 할당할 CA 풀의 전체 리소스 경로와 이름입니다.CERTIFICATE_LIFETIME
: 인증서 수명(일)입니다. 유효한 값은 표준 기간 형식의 21~30일입니다. 기본값은 30일(30D
)입니다. 이 설정은 선택사항입니다.ROTATION_WINDOW_PERCENTAGE
: 갱신이 트리거되는 인증서 수명 비율입니다. 이 설정은 선택사항입니다.기본값은 66%입니다. 인증서 발급 후 최소 7일이 지나고 만료되기 최소 7일 전에 인증서가 갱신되도록 인증서 수명과 관련하여 순환 기간 비율을 설정해야 합니다.
KEY_ALGORITHM
: 비공개 키를 생성하는 데 사용되는 암호화 알고리즘입니다. 유효한 값은ecdsa-p256
또는rsa-2048
입니다. 기본값은rsa-2048
입니다. 이 설정은 선택사항입니다.
인증서 발급 구성에 대한 자세한 내용은 인증서 발급 구성 관리를 참조하세요.
CA 서비스 인스턴스에서 발급한 Google 관리 인증서 만들기
다음과 같이 CA 서비스 인스턴스에서 발급한 Google 관리형 인증서를 만듭니다.
콘솔
Google Cloud 콘솔에서 인증서 관리자 페이지로 이동합니다.
표시되는 페이지에서 인증서 탭을 선택합니다.
인증서 추가를 클릭합니다.
인증서 이름을 입력합니다.
이 이름은 프로젝트에서 고유해야 합니다.
선택사항: 인증서 설명을 입력합니다. 설명은 나중에 특정 인증서를 식별하는 데 도움이 됩니다.
위치에 전역을 선택합니다.
범위에서 다음 옵션 중 하나를 선택합니다.
- 기본값: 전역 외부 애플리케이션 부하 분산기, 기본 애플리케이션 부하 분산기 또는 전역 외부 프록시 네트워크 부하 분산기에 대해 기본값을 선택합니다.
- 모든 리전: 리전 간 내부 애플리케이션 부하 분산기에 대해 모든 리전을 선택합니다.
인증서 유형에서 Google 관리형 인증서 만들기를 선택합니다.
인증 기관 유형에서 비공개를 선택합니다.
인증서의 도메인 이름을 지정합니다. 쉼표로 구분된 대상 도메인 목록을 입력합니다. 또한 각 도메인 이름은
myorg.example.com
과 같은 정규화된 도메인 이름이어야 합니다.인증서 발급 구성에서 대상 CA 풀을 참조하는 인증서 발급 구성 리소스의 이름을 선택합니다.
인증서에 연결할 라벨을 지정합니다. 필요한 경우 라벨을 2개 이상 추가할 수 있습니다. 라벨을 추가하려면 add_box 라벨 추가 버튼을 클릭하고 라벨에
key
및value
를 지정합니다.만들기를 클릭합니다. 새 인증서가 인증서 목록에 표시되는지 확인합니다.
gcloud
전역 외부 애플리케이션 부하 분산기, 기본 애플리케이션 부하 분산기 또는 전역 외부 프록시 네트워크 부하 분산기:
다음 명령어를 실행합니다.
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="DOMAIN_NAMES" \ --issuance-config=ISSUANCE_CONFIG_NAME
다음을 바꿉니다.
CERTIFICATE_NAME
: 인증서의 고유한 이름입니다.DOMAIN_NAMES
: 쉼표로 구분된 이 인증서의 대상 도메인 목록입니다. 각 도메인 이름은myorg.example.com
과 같은 정규화된 도메인 이름이어야 합니다.ISSUANCE_CONFIG_NAME
: 대상 CA 풀을 참조하는 인증서 발급 구성 리소스의 이름입니다.
리전 간 내부 애플리케이션 부하 분산기:
다음 명령어를 실행합니다.
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="DOMAIN_NAMES" \ --issuance-config=ISSUANCE_CONFIG_NAME \ --scope=all-regions
다음을 바꿉니다.
CERTIFICATE_NAME
: 인증서의 고유한 이름입니다.DOMAIN_NAMES
: 쉼표로 구분된 이 인증서의 대상 도메인 목록입니다. 각 도메인 이름은myorg.example.com
과 같은 정규화된 도메인 이름이어야 합니다.ISSUANCE_CONFIG_NAME
: 대상 CA 풀을 참조하는 인증서 발급 구성 리소스의 이름입니다.
API
다음과 같이 certificates.create
메서드에 POST
요청을 전송하여 인증서를 만듭니다.
전역 외부 애플리케이션 부하 분산기, 기본 애플리케이션 부하 분산기 또는 전역 외부 프록시 네트워크 부하 분산기:
POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME" { "managed": { "domains": ["DOMAIN_NAME"], "issuanceConfig": "ISSUANCE_CONFIG_NAME", } }
다음을 바꿉니다.
PROJECT_ID
: 대상 Google Cloud 프로젝트의 ID입니다.CERTIFICATE_NAME
: 인증서의 고유한 이름입니다.DOMAIN_NAME
: 이 인증서의 대상 도메인입니다. 도메인 이름은myorg.example.com
과 같은 정규화된 도메인 이름이어야 합니다.ISSUANCE_CONFIG_NAME
: 대상 CA 풀을 참조하는 인증서 발급 구성 리소스의 이름입니다.
리전 간 내부 애플리케이션 부하 분산기:
POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME" { "managed": { "domains": ["DOMAIN_NAME"], "issuanceConfig": "ISSUANCE_CONFIG_NAME", "scope": "ALL_REGIONS" } }
다음을 바꿉니다.
PROJECT_ID
: 대상 Google Cloud 프로젝트의 ID입니다.CERTIFICATE_NAME
: 인증서의 고유한 이름입니다.DOMAIN_NAME
: 이 인증서의 대상 도메인입니다. 도메인 이름은myorg.example.com
과 같은 정규화된 도메인 이름이어야 합니다.ISSUANCE_CONFIG_NAME
: 대상 CA 풀을 참조하는 인증서 발급 구성 리소스의 이름입니다.
인증서 배포 프로세스에 대한 개요는 배포 개요를 참조하세요.
인증서가 활성 상태인지 확인
다음 명령어를 사용하여 부하 분산기에 배포하기 전에 인증서 자체가 활성 상태인지 확인합니다. 인증서 상태가 ACTIVE
로 변경되는 데 몇 분 정도 걸릴 수 있습니다.
gcloud certificate-manager certificates describe CERTIFICATE_NAME
CERTIFICATE_NAME
을 대상 Google 관리형 인증서의 이름으로 바꿉니다.
이 명령어는 다음과 유사한 출력을 반환합니다.
createTime: '2021-10-20T12:19:53.370778666Z' expireTime: '2022-05-07T05:03:49Z' managed: domains: - myorg.example.com issuanceConfig: projects/myProject/locations/global/certificateIssuanceConfigs/myIssuanceConfig 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'
부하 분산기에 인증서 배포
이 섹션에서는 Google 관리 인증서를 부하 분산기에 배포하는 데 필요한 단계를 설명합니다.
이 섹션의 태스크를 진행하기 전에 인증서 관리자와 CA 서비스 통합 구성 및 CA 서비스 인스턴스에서 발급한 Google 관리 인증서 만들기 섹션에 나와 있는 태스크를 완료했는지 확인합니다.
부하 분산기 유형에 따라 다음과 같이 인증서를 배포할 수 있습니다.
- 다음 부하 분산기의 경우 인증서 맵을 사용하여 인증서를 배포합니다.
- 전역 외부 애플리케이션 부하 분산기
- 전역 외부 프록시 네트워크 부하 분산기
- 기본 애플리케이션 부하 분산기
- 리전 간 내부 애플리케이션 부하 분산기의 경우 대상 프록시에 직접 연결하여 인증서를 배포합니다.
인증서 맵을 사용하여 인증서 배포
이 섹션에서는 인증서 맵을 사용하여 인증서를 배포하는 단계를 설명합니다.
인증서 맵 만들기
인증서와 연결된 인증서 맵 항목을 참조하는 인증서 맵을 만듭니다.
gcloud certificate-manager maps create CERTIFICATE_MAP_NAME
CERTIFICATE_MAP_NAME
을 대상 인증서 맵의 이름으로 바꿉니다.
인증서 맵 항목 만들기
인증서 맵 항목을 만들고 인증서 및 인증서 맵과 연결합니다.
gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME" \ --certificates="CERTIFICATE_NAME" \ --hostname="HOSTNAME"
다음을 바꿉니다.
CERTIFICATE_MAP_ENTRY_NAME
: 인증서 맵 항목의 고유한 이름CERTIFICATE_MAP_NAME
: 이 인증서 맵 항목이 연결된 인증서 맵의 이름CERTIFICATE_NAME
: 이 인증서 맵 항목에 연결하려는 인증서의 이름HOSTNAME
: 이 인증서 맵 항목과 연결하려는 호스트 이름
인증서 맵 항목이 활성 상태인지 확인
다음 명령어를 사용하여 해당 인증서 맵을 대상 프록시에 연결하기 전에 인증서 맵 항목이 활성 상태인지 확인합니다.
gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
다음을 바꿉니다.
CERTIFICATE_MAP_ENTRY_NAME
: 대상 인증서 맵 항목 이름CERTIFICATE_MAP_NAME
: 이 인증서 맵 항목이 연결된 인증서 맵의 이름
이 명령어는 다음과 유사한 출력을 반환합니다.
certificates: createTime: '2021-09-06T10:01:56.229472109Z' hostname: example.com name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry state: ACTIVE updateTime: '2021-09-06T10:01:58.277031787Z'
대상 프록시에 인증서 맵 연결
구성된 인증서 맵을 대상 프록시에 연결합니다.
Google Cloud 콘솔에서 대상 프록시 페이지로 이동합니다.
대상 프록시의 이름을 확인합니다.
인증서 맵을 대상 프록시에 연결합니다.
gcloud compute target-https-proxies update PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME"
다음을 바꿉니다.
PROXY_NAME
: 대상 프록시 이름CERTIFICATE_MAP_NAME
: 인증서 맵 항목과 연결된 인증서를 참조하는 인증서 맵의 이름
기존 TLS(SSL) 인증서가 프록시에 직접 연결되어 있으면 프록시는 직접 연결된 TLS(SSL) 인증서보다 인증서 맵에서 참조하는 인증서를 우선시합니다.
대상 프록시에 인증서 직접 연결
인증서를 프록시에 직접 연결하려면 다음 명령어를 실행합니다.
gcloud compute target-https-proxies update PROXY_NAME \ --url-map=URL_MAP \ --global \ --certificate-manager-certificates=CERTIFICATE_NAME
다음을 바꿉니다.
PROXY_NAME
: 프록시의 고유한 이름URL_MAP
: URL 맵의 이름 부하 분산기를 만들 때 URL 맵을 만들었습니다.CERTIFICATE_NAME
: 인증서의 이름.
문제 해결
문제 해결 단계는 CA 서비스 인스턴스에서 발급한 인증서 관련 문제를 참조하세요.
삭제
이 튜토리얼의 변경사항을 되돌리려면 다음 단계를 완료합니다.
인증서 맵을 프록시에서 분리합니다.
인증서 맵을 분리하기 전에 다음 사항에 유의하세요.
- 프록시에 직접 연결된 TLS(SSL) 인증서가 있는 경우 인증서 맵을 분리하면 프록시가 직접 연결된 TLS(SSL) 인증서를 사용하여 프록시를 다시 시작합니다.
- 프록시에 직접 연결된 TLS(SSL) 인증서가 없으면 인증서 맵을 프록시에서 분리할 수 없습니다. 인증서 맵을 분리하려면 먼저 TLS(SSL) 인증서 최소 하나 이상을 프록시에 직접 연결해야 합니다.
인증서 맵을 분리하려면 다음 명령어를 실행합니다.
gcloud compute target-https-proxies update PROXY_NAME \ --clear-certificate-map
PROXY_NAME
을 대상 프록시의 이름으로 바꿉니다.인증서 맵에서 인증서 맵 항목을 삭제합니다.
gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
다음을 바꿉니다.
CERTIFICATE_MAP_ENTRY_NAME
: 대상 인증서 맵 항목 이름CERTIFICATE_MAP_NAME
: 대상 인증서 맵 이름
인증서 맵을 삭제합니다.
gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
CERTIFICATE_MAP_NAME
을 대상 인증서 맵의 이름으로 바꿉니다.Google 관리형 인증서를 삭제합니다.
gcloud certificate-manager certificates delete CERTIFICATE_NAME
CERTIFICATE_NAME
을 대상 인증서의 이름으로 바꿉니다.인증서 발급 구성 리소스를 삭제합니다.
gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
ISSUANCE_CONFIG_NAME
을 대상 인증서 발급 구성 리소스의 이름으로 바꿉니다.CA 풀 삭제에 설명된 대로 CA 풀을 삭제합니다.
인증서 발급 구성에서 참조된 CA 풀에서 사용 설정한 마지막 CA를 중지하거나 참조된 CA 풀을 완전히 삭제하려면 먼저 해당 CA 풀을 참조하는 모든 인증서 발급 구성을 삭제해야 합니다.