Google 관리형 SSL 인증서 사용

이 페이지에서는 Google 관리형 SSL 인증서를 만들고 사용하는 방법을 설명합니다.

Google 관리형 SSL 인증서는 도메인에서 Google Cloud가 가져오고 관리하는 인증서로, 자동 갱신됩니다. 각 인증서에 여러 호스트 이름을 지원하는 도메인 유효성 검사(DV) 인증서입니다.

SSL 인증서는 다음을 포함한 특정 유형의 Google Cloud 부하 분산기에 필요합니다.

Google Kubernetes Engine에서 관리형 SSL 인증서를 사용할 수도 있습니다. 자세한 내용은 Google 관리형 SSL 인증서 사용을 참조하세요.

부하 분산기를 만들기 전, 도중 또는 이후에 Google 관리형 인증서를 만들 수 있습니다. 이 페이지에서는 부하 분산기를 만드는 중이 아닌 만들기 전이나 만든 후에 인증서를 생성한다고 가정합니다. 부하 분산기를 만드는 동안 인증서를 만들려면 부하 분산기 방법 페이지를 참조하세요.

여러 도메인

여러 주체 대체 이름이 지원됩니다. 각 Google 관리형 SSL 인증서는 Google 관리형 SSL 인증서당 최대 도메인 수를 지원합니다.

최대 도메인 수보다 많다면 여러 개의 Google 관리형 인증서를 요청해야 합니다. 예를 들어 (최대 개수 +1)개의 도메인이 있는 Google 관리형 인증서를 만들고자 한다면 Google은 그러한 인증서를 발행하지 않습니다. 대신 두 개 이상의 Google 관리형 인증서를 만들고 각 인증서에 연결되는 도메인을 명시적으로 지정해야 합니다.

Google Cloud는 RFC 6066에 정의된 대로 서버 이름 표시(SNI)를 구현합니다.

Google에서 도메인이 여러 개 있는 관리형 인증서를 갱신할 때 도메인 또는 하위 도메인이 부하 분산기의 IP 주소를 가리키지 않으면 갱신 프로세스가 실패합니다. 관리형 인증서가 프로비저닝되면 갱신이 실패하지 않도록 모든 도메인과 하위 도메인이 계속 부하 분산기의 IP 주소를 가리키는지 확인합니다.

시작하기 전에

권한

이 가이드를 따르려면 프로젝트에서 SSL 인증서를 만들고 수정할 수 있는 권한이 있어야 합니다. 다음 역할 또는 권한이 있다면 이러한 권한이 있는 것입니다.

  • 프로젝트 소유자 또는 편집자입니다.
  • 프로젝트에서 compute.loadBalancerAdmin 역할을 갖고 있거나 프로젝트에서 compute.securityAdmincompute.networkAdmin 역할을 모두 갖고 있습니다.
  • 사용 중인 부하 분산기 유형에 따라 compute.sslCertificates.* 권한과 compute.targetHttpsProxies.*compute.targetSslProxies.* 중 하나 또는 둘 모두를 포함하는 프로젝트의 커스텀 역할이 있습니다.

1단계: Google 관리형 SSL 인증서 만들기

부하 분산기를 만들기 전, 도중 또는 이후에 Google 관리형 인증서를 만들 수 있습니다. Cloud Console에서 부하 분산기를 만드는 과정에서 Cloud Console을 사용하여 인증서를 만들 수 있습니다. 또는 부하 분산기를 만들기 전후에 인증서를 만들 수 있습니다. 이 단계에서는 나중에 하나 이상의 부하 분산기에 추가할 수 있는 인증서를 만드는 방법을 보여줍니다.

이미 Google 관리형 SSL 인증서를 만든 경우 이 단계를 건너뛸 수 있습니다.

Console

부하 분산 페이지의 인증서 탭에서 SSL 인증서 작업을 할 수 있습니다.

  1. Google Cloud Console의 인증서 페이지로 이동합니다.
    인증서 페이지로 이동
  2. SSL 인증서 만들기를 클릭합니다.
  3. 인증서의 이름과 설명(선택사항)을 입력합니다.
  4. Google 관리형 인증서 만들기를 선택합니다.
  5. 도메인을 추가합니다.
  6. 만들기를 클릭합니다.

gcloud

gcloud compute ssl-certificates create 명령어를 사용하여 외부 HTTP(S) 부하 분산기 또는 SSL 프록시 부하 분산기의 전역 Google 관리형 SSL 인증서를 만듭니다.

gcloud compute ssl-certificates create CERTIFICATE_NAME \
    --description=DESCRIPTION \
    --domains=DOMAIN_LIST \
    --global

다음 자리표시자를 유효한 값으로 바꿉니다.

  • CERTIFICATE_NAME: 전역 SSL 인증서 이름입니다.
  • DESCRIPTION: 전역 SSL 인증서에 대한 설명입니다.
  • DOMAIN_LIST: 이 인증서에 사용할 단일 도메인 이름 또는 쉼표로 구분된 도메인 이름 목록입니다.

api

Google 관리 인증서 리소스 sslCertificates.insert 메서드를 만들고 PROJECT_ID를 프로젝트 ID로 바꿉니다.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/sslCertificates
{
  "name": "ssl-certificate-name",
  "managed": {
    "domains": [
      "www.example.com"
    ]
  },
  "type": "MANAGED"
}

Google 관리형 SSL 인증서 상태 확인

Console

부하 분산 페이지의 인증서 탭에서 SSL 인증서 상태를 확인할 수 있습니다.

  1. Google Cloud Console의 인증서 페이지로 이동합니다.
    인증서 페이지로 이동
  2. (선택사항) SSL 인증서 목록을 필터링합니다.
  3. 상태 열을 확인합니다.
  4. 자세한 내용을 보려면 인증서 이름을 클릭합니다.

gcloud

gcloud compute 명령어를 사용하여 Google 관리형 인증서의 상태를 확인할 수 있습니다. 적절한 명령어를 실행한 후 다음을 확인합니다.

  • 관리 상태.
  • 도메인 상태.

--global 플래그와 함께 gcloud compute ssl-certificates list 명령어를 사용하여 Google 관리형 SSL 인증서를 나열합니다.

gcloud compute ssl-certificates list \
   --global

gcloud compute ssl-certificates describe 명령어를 사용하여 CERTIFICATE_NAME을 바꿀 수 있습니다.

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
   --global \
   --format="get(name,managed.status, managed.domainStatus)"

이 시점에 인증서 상태와 도메인 상태는 PROVISIONING입니다. 이 페이지의 모든 단계를 완료하면 상태는 ACTIVE로 변경됩니다.

상태에 대한 자세한 내용은 문제해결 페이지를 참조하세요.

2단계: 부하 분산기 만들기 또는 업데이트

ACTIVE가 되려면 Google 관리형 SSL 인증서가 부하 분산기, 특히 부하 분산기의 대상 프록시와 연결되어야 합니다.

SSL 인증서를 만들고 PROVISIONING 상태인 경우 다음 안내 가이드에 설명된 대로 부하 분산기를 만드는 동안 사용할 수 있습니다.

또는 여기에 설명된 대로 이를 사용하여 기존 부하 분산기를 업데이트할 수 있습니다.

Console

Google Cloud Console을 사용하여 외부 HTTP(S) 부하 분산기 또는 SSL 프록시 부하 분산기를 업데이트하면 Google Cloud가 자동으로 SSL 인증서를 올바른 대상 프록시와 연결합니다.

  1. Google Cloud Console의 부하 분산 페이지로 이동합니다.
    부하 분산 페이지로 이동
  2. 부하 분산기의 이름을 클릭합니다.
  3. 수정 을 클릭합니다.
  4. 프런트엔드 구성을 클릭합니다.
  5. 올바른 프런트엔드를 클릭합니다. HTTPS, HTTP/2, SSL이어야 합니다.
  6. 추가 인증서를 클릭하고 드롭다운 목록에서 Google 관리형 인증서를 선택합니다.
  7. 만들기를 클릭합니다.

gcloud

외부 HTTP(S) 부하 분산기의 대상 HTTPS 프록시와 SSL 인증서를 연결하려면 --global-ssl-certificates--global 플래그를 사용하여 gcloud compute target-https-proxies update 명령어를 사용합니다.

gcloud compute target-https-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST \
    --global-ssl-certificates \
    --global

SSL 프록시 부하 분산기의 대상 SSL 프록시에 SSL 인증서를 연결하려면 gcloud compute target-ssl-proxies update 명령어를 사용합니다.

gcloud compute target-ssl-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST

자리표시자를 유효한 값으로 바꿉니다.

  • TARGET_PROXY_NAME: 부하 분산기의 대상 프록시 이름입니다.
  • SSL_CERTIFICATE_LIST: 쉼표로 구분된 SSL 인증서 목록입니다.

각 대상 HTTPS 프록시 또는 대상 SSL 프록시는 하나 이상의 SSL 인증서를 참조해야 합니다. 대상 프록시는 둘 이상의 SSL 인증서를 참조할 수 있습니다. 자세한 내용은 부하 분산 리소스 할당량 및 한도의 대상 풀 및 대상 프록시를 참조하세요.

3단계: 대상 프록시 연결 확인

부하 분산기를 만들거나 업데이트한 후 다음 명령어를 실행하여 SSL 인증서가 부하 분산기의 대상 프록시와 연결되었는지 확인할 수 있습니다.

외부 HTTPS 부하 분산기:

gcloud compute target-https-proxies describe target-https-proxy-name \
    --global \
    --format="get(sslCertificates)"

SSL 프록시 부하 분산기:

gcloud compute target-ssl-proxies describe target-ssl-proxy-name \
    --format="get(sslCertificates)"

이 시점에서 Google 관리형 인증서 상태는 PROVISIONING일 수 있습니다. Google Cloud는 인증 기관과 협력하여 인증서를 발급합니다. Google 관리형 인증서를 프로비저닝하는 데 최대 60분이 걸릴 수 있습니다.

4단계: 부하 분산기의 IP 주소를 가리키도록 DNS A 및 AAAA 레코드 업데이트

등록기관의 사이트, DNS 호스트 또는 ISP(DNS 레코드를 관리하는 곳)에서 도메인과 모든 하위 도메인에 DNS A 레코드(IPv4용) 및 DNS AAAA 레코드(IPv6용)를 추가 또는 업데이트하여 부하 분산기의 전달 규칙과 연결된 IP 주소를 가리키도록 합니다.

Cloud DNSGoogle Domains를 사용할 경우 도메인을 설정하고 네임서버를 업데이트합니다.

단일 Google 관리 인증서에 도메인 여러 개를 사용할 경우 모든 도메인과 하위 도메인에 DNS 레코드를 추가 또는 업데이트하여 모두 부하 분산기의 IP 주소를 가리키도록 해야 합니다.

DNS 전파가 완료될 때까지 기다린 후 dig 명령어를 실행하여 설정을 확인할 수 있습니다. 예를 들어 도메인이 www.example.com이라고 가정해 보겠습니다. 다음 dig 명령어를 실행합니다.

dig www.example.com
; <<>> DiG 9.10.6 <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31748
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.example.com.           IN  A

;; ANSWER SECTION:
www.example.com.        1742    IN  CNAME   www.example.com.edgekey.net.
www.example.com.edgekey.net. 21330 IN   CNAME   www.example.com.edgekey.net.globalredir.akadns.net.
www.example.com.edgekey.net.globalredir.akadns.net. 3356 IN CNAME   e6858.dsce9.akamaiedge.net.
e6858.dsce9.akamaiedge.net. 212 IN  A   203.0.113.5

;; Query time: 43 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Jun 03 16:54:44 PDT 2020
;; MSG SIZE  rcvd: 193

이 예시에서 203.0.113.5는 부하 분산기의 IP 주소입니다.

또한 다음 명령어를 다시 실행합니다.

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
    --format="get(managed.domainStatus)"

도메인 상태가 FAILED_NOT_VISIBLE인 경우 문제 해결 페이지의 Google 관리 SSL 인증서 도메인 상태 섹션을 참조하세요.

5단계: OpenSSL로 테스트

인증서 및 도메인 상태가 활성화된 후 부하 분산기가 Google 관리 SSL 인증서를 사용하는 데 최대 30분이 걸릴 수 있습니다.

테스트하려면 다음 OpenSSL 명령어를 실행하여 DOMAIN을 DNS 이름으로, IP_ADDRESS를 부하 분산기의 IP 주소로 바꿉니다.

echo | openssl s_client -showcerts -servername DOMAIN -connect IP_ADDRESS:443 -verify 99 -verify_return_error

이 명령어는 부하 분산기가 클라이언트에 제공하는 인증서를 출력합니다. 출력에는 세부정보와 함께 인증서 체인과 Verify return code: 0 (ok)이 포함됩니다.

Google 관리형 SSL 인증서 갱신

Google Cloud는 90일 동안 유효한 관리형 인증서를 프로비저닝합니다. 만료 약 1개월 전에 인증서 갱신 프로세스가 자동으로 시작됩니다. 이를 위해 도메인의 CAA DNS 레코드와 CA 목록에 있는 인증 기관(CA)이 선택됩니다.

갱신에 사용되는 CA는 Google 관리형 인증서의 이전 버전을 발급하는 데 사용한 CA와 다를 수 있습니다. 도메인의 인증 기관 승인(CAA) DNS 레코드로 Google 관리형 인증서가 사용하는 CA 목록에서 단일 CA를 지정하여 Google Cloud가 갱신에 사용하는 CA를 제어할 수 있습니다.

Google에서 도메인이 여러 개 있는 관리형 인증서를 갱신할 때 도메인 또는 하위 도메인이 부하 분산기의 IP 주소를 가리키지 않으면 갱신 프로세스가 실패합니다. 관리형 인증서가 프로비저닝되면 갱신이 실패하지 않도록 모든 도메인과 하위 도메인이 계속 부하 분산기의 IP 주소를 가리키는지 확인합니다.

선택 절차

Google 관리형 인증서 발급이 허용되는 CA 지정

DNS 서버 소프트웨어에서 Google 관리형 인증서 발급을 허용할 CA를 지정합니다. 이를 위해 pki.goog, letsencrypt.org 또는 둘 다를 포함하도록 CAA 레코드를 만들거나 수정합니다. CAA 레코드가 없는 경우 기본 동작은 pki.googletsencrypt.org를 모두 허용하는 것입니다.

DOMAIN. CAA 0 issue "pki.goog"
DOMAIN. CAA 0 issue "letsencrypt.org"

letsencrypt.org 인증서 지원은 최선을 다해 제공됩니다. 안정성을 높이려면 pki.googletsencrypt.org를 모두 허용합니다. 여러 CA 중 하나만 지정하면 오직 해당 CA만 인증서를 만들고 갱신하는 데 사용됩니다. 이 방법은 권장되지 않습니다.

인증서를 처음 만들면 Google Cloud에서 pki.goog 또는 letsencrypt.org를 선택하고 이를 사용하여 인증서를 발급합니다. Google에서 인증서를 갱신할 때 CAA 레코드에 지정한 CA(만든 경우)에 따라 다른 CA에서 인증서를 발급할 수 있습니다. 다음 중 하나에 해당하는 경우 인증서가 다른 CA에 의해 갱신될 수 있습니다.

  • 도메인에 DNS CAA 레코드가 없습니다.
  • DNS CAA 레코드에 두 CA를 모두 포함했습니다.

자세한 내용은 RFC 인증 기관 승인(CAA) DNS 레코드를 참조하세요.

다국어 도메인 이름(IDN)letsencrypt.org에서 발급합니다. 현재 pki.goog에서 지원되지 않습니다.

Cloud DNS를 사용할 경우 레코드를 추가하는 방법을 알아보고 --type 플래그를 CAA로 설정해야 합니다.

기존 SSL 인증서 교체

기존 SSL 인증서를 교체하려면 다음 안내를 따르세요.

  1. 대체 Google 관리형 SSL 인증서를 만드는 프로세스를 시작합니다. 이 인증서는 현재 ACTIVE 상태가 되지 않습니다.

  2. 참조된 인증서 목록에 현재 SSL 인증서와 함께 대체 SSL 인증서가 포함되도록 대상 프록시를 업데이트합니다. 대상 프록시를 업데이트하는 단계는 다음과 같이 다양합니다.

  3. 대체 SSL 인증서가 프로비저닝을 완료할 때까지 기다립니다. 여기에는 최대 60분이 걸릴 수 있습니다. 프로비저닝이 완료되면 인증서 상태ACTIVE로 됩니다.

  4. 모든 Google 프런트엔드(GFE)에서 대체 인증서를 사용할 수 있도록 30분 더 기다립니다.

  5. 참조하는 인증서 목록에서 대체할 SSL 인증서를 삭제하려면 대상 프록시를 업데이트합니다. 대상 프록시를 업데이트하는 단계는 다음과 같이 다양합니다.

  6. 10분 동안 기다렸다가 부하 분산기가 이전 인증서 대신 대체 SSL 인증서를 사용하고 있는지 확인합니다.

  7. 필요한 경우 이전 SSL 인증서 리소스를 삭제합니다.

이전 SSL 인증서를 삭제하지 않으면 인증서가 만료될 때까지 ACTIVE 상태로 유지됩니다.

자체 관리형 SSL 인증서에서 Google 관리형 SSL 인증서로 마이그레이션

부하 분산기가 자체 관리형 SSL 인증서를 사용하다가 Google 관리형 SSL 인증서로 마이그레이션할 때는 다음 단계를 이 순서대로 수행해야 합니다.

  1. 새 Google 관리형 인증서를 만듭니다.
  2. 새 Google 관리형 인증서와 올바른 대상 프록시를 연결하면서 대상 프록시와 기존 자체 관리형 인증서의 연결은 유지합니다.
  3. Google 관리형 인증서 상태ACTIVE가 될 때까지 기다립니다.
  4. 새 인증서가 Google 프런트엔드(GFE)에 제공되도록 30분 동안 기다립니다.
  5. 대상 프록시를 다시 업데이트하여 자체 관리형 인증서를 제거합니다.

SSL 인증서 삭제

SSL 인증서를 삭제하기 전에 이 인증서를 참조하는 HTTPS 또는 SSL 대상 프록시가 없는지 확인하세요. 여기에는 두 가지 방법이 있습니다.

SSL 인증서를 하나 이상 삭제하려면 다음 안내를 따르세요.

Console

부하 분산 페이지의 인증서 탭에서 SSL 인증서를 삭제할 수 있습니다.

  1. Google Cloud Console의 인증서 페이지로 이동합니다.
    인증서 페이지로 이동
  2. 삭제할 SSL 인증서를 선택합니다.
  3. 삭제를 클릭합니다.
  4. 확인하려면 삭제를 다시 클릭합니다.

gcloud

전역 SSL 인증서(외부 HTTP(S) 부하 분산기 또는 SSL 프록시 부하 분산기용)를 삭제하려면 gcloud compute ssl-certificates delete 명령어와 --global 명령어를 사용합니다.

gcloud compute ssl-certificates delete CERTIFICATE_NAME \
    --global

자리표시자를 유효한 값으로 바꿉니다.

  • CERTIFICATE_NAME: SSL 인증서 이름입니다.

다음 단계