문제 해결 절차는 사용하는 SSL 인증서 유형에 따라 다릅니다.
Google 관리형 인증서 문제 해결
Google 관리형 인증서에는 다음과 같은 두 가지 유형의 상태가 있습니다.
- 관리 상태
- 도메인 상태
관리 상태
인증서 상태를 확인하려면 다음 명령어를 실행하세요.
gcloud compute ssl-certificates describe CERTIFICATE_NAME \ --global \ --format="get(name,managed.status)"
관리 상태의 값은 다음과 같습니다.
관리 상태 | 설명 |
---|---|
PROVISIONING |
Google 관리형 인증서가 생성되었으며 Google Cloud 는 인증 기관과 협력하여 서명합니다. Google 관리 인증서를 프로비저닝하는 데 DNS 및 부하 분산기 구성 변경사항이 인터넷에 전파되는 순간부터 최대 60분이 걸릴 수 있습니다. 최근에 DNS 구성을 업데이트한 경우 변경사항이 완전히 전파되는 데 상당한 시간이 걸릴 수 있습니다. 전파되는 데 최대 72시간이 걸리는 경우가 있지만 일반적으로 몇 시간 정도 걸립니다. DNS 전파에 대한 자세한 내용은 변경사항 전파를 참조하세요. 인증서가 |
ACTIVE |
Google 관리형 SSL 인증서는 인증 기관에서 가져옵니다. 부하 분산기에서 사용하기까지 추가로 30분이 걸릴 수 있습니다. |
PROVISIONING_FAILED |
인증서가 실제로 ACTIVE 상태일 때에도 잠깐 동안 PROVISIONING_FAILED 상태로 보일 수 있습니다.
상태를 다시 확인하세요. 계속 PROVISIONING_FAILED 상태일 경우 Google 관리형 인증서가 생성되었으나 인증 기관이 서명할 수 없습니다. Google 관리형 SSL 인증서 사용의 모든 단계를 완료했는지 확인합니다. 상태가 PROVISIONING_FAILED_PERMANENTLY 로 바뀔 때까지 Google Cloud 프로비저닝을 재시도합니다.
|
PROVISIONING_FAILED_PERMANENTLY |
Google 관리형 인증서가 생성되었지만 DNS 또는 부하 분산기 구성 문제로 인해 인증 기관에서 서명할 수 없습니다. 이 상태에서는 Google Cloud 프로비저닝을 다시 시도하지 않습니다. 대체 Google 관리형 SSL 인증서를 만들고 대체 인증서가 부하 분산기의 대상 프록시와 연결되어 있는지 확인합니다. Google 관리형 SSL 인증서 사용의 모든 단계를 확인하거나 완료합니다. 그런 다음 프로비저닝에 영구적으로 실패한 인증서를 삭제할 수 있습니다. |
RENEWAL_FAILED |
부하 분산기 또는 DNS 구성의 문제로 인해 Google 관리형 인증서 갱신에 실패했습니다. 관리형 인증서의 도메인이나 하위 도메인에서 A/AAAA 레코드를 사용하여 부하 분산기의 IP 주소를 가리키지 않으면 갱신 프로세스가 실패합니다. 기존 인증서가 계속 제공되지만 곧 만료됩니다. 구성을 확인합니다. 상태가 계속 인증서 갱신에 대한 자세한 내용은 Google 관리형 SSL 인증서 갱신을 참조하세요. |
도메인 상태
도메인 상태를 확인하려면 다음 명령어를 실행하세요.
gcloud compute ssl-certificates describe CERTIFICATE_NAME \ --global \ --format="get(managed.domainStatus)"
이 표에 도메인 상태의 값이 설명되어 있습니다.
도메인 상태 | 설명 |
---|---|
PROVISIONING |
Google 관리형 인증서가 도메인에 대해 생성됩니다. Google Cloud 는 인증 기관과 협력하여 인증서에 서명합니다. |
ACTIVE |
도메인에서 성공적으로 인증서 프로비저닝 유효성 검사를 완료했습니다. SSL 인증서가 여러 도메인에 사용되는 경우 모든 도메인이 ACTIVE 상태이고 인증서의 관리형 상태가 ACTIVE 인 경우에만 인증서를 프로비저닝할 수 있습니다.
|
FAILED_NOT_VISIBLE |
도메인의 인증서 프로비저닝이 완료되지 않았습니다. 다음 중 하나가 문제일 수 있습니다.
PROVISIONING 이면 도메인 상태가 FAILED_NOT_VISIBLE 인 경우에도 Google Cloud는 계속 프로비저닝을 다시 시도합니다. Google Cloud
|
FAILED_CAA_CHECKING |
도메인의 CAA 레코드 구성 문제로 인해 인증서 프로비저닝에 실패했습니다. 올바른 절차를 따랐는지 확인합니다. |
FAILED_CAA_FORBIDDEN |
도메인의 CAA 레코드에서 사용해야 하는 CA를 지정하지 않아 인증서 프로비저닝에 실패했습니다. Google Cloud 올바른 절차를 따랐는지 확인합니다. |
FAILED_RATE_LIMITED |
인증 기관에서 비율 제한 인증서 서명 요청을 사용하여 인증서 프로비저닝에 실패했습니다. 새 인증서를 프로비저닝하고 새 인증서를 사용하도록 전환한 후 이전 인증서를 삭제하거나Google Cloud 지원팀에 문의할 수 있습니다. |
관리형 인증서 갱신
인증서가 갱신 절차의 도메인 유효성 검사 단계에서 실패하지 않도록 하려면 DNS A 및 AAAA 레코드 요구사항을 검토하세요.
다각도 도메인 유효성 검사
Google Cloud 는 인증 기관 (CA)에서 Google 관리형 인증서를 요청하여 주기적으로 갱신합니다.Google Cloud 가 인증서를 갱신하기 위해 사용하는 CA는 다중 관점 발급 확인(MPIC)이라는 다중 관점 도메인 유효성 검사 방법을 사용합니다. 이 프로세스의 일환으로 인증 기관은 도메인의 DNS 설정을 확인하고 도메인의 IP 주소 뒤에 있는 서버에 연결을 시도하여 도메인 제어를 확인합니다. 이러한 인증은 인터넷 전반의 여러 관점에서 실시됩니다. 검증 프로세스가 실패하면 Google 관리 인증서가 갱신되지 않습니다. 그 결과 부하 분산기에서 클라이언트에 만료된 인증서를 제공하여 브라우저 사용자에게 인증서 오류가 발생하고 API 클라이언트에서 연결 실패가 발생합니다.
구성이 잘못된 DNS 레코드의 다각적 도메인 유효성 검사 실패를 방지하려면 다음 사항에 유의하세요.
- 도메인 및 하위 도메인의 DNS A 레코드(IPv4) 및 DNS AAAA(IPv6) 레코드는 부하 분산기의 전달 규칙과 연결된 IP 주소(들)만 가리킵니다. 레코드에 다른 주소가 있으면 유효성 검사가 실패할 수 있습니다.
- DNS 레코드의 유효성 검사를 실행하는 CA는 여러 위치의 DNS 레코드를 쿼리합니다. DNS 제공업체가 모든 글로벌 도메인 유효성 검사 요청에 일관되게 응답하는지 확인합니다.
- GeoDNS (요청 위치에 따라 다른 IP 주소 반환) 또는 위치 기반 DNS 정책을 사용하면 응답이 일관되지 않고 유효성 검사가 실패할 수 있습니다. DNS 제공업체에서 GeoDNS를 사용하는 경우 사용 중지하거나 모든 리전에서 동일한 부하 분산기 IP 주소를 반환하도록 합니다.
- DNS 구성에서 부하 분산기의 IP 주소를 명시적으로 지정해야 합니다. CDN과 같은 중간 레이어로 인해 예측할 수 없는 동작이 발생할 수 있습니다. 요청 경로에 리디렉션, 방화벽 또는 CDN이 없어도 IP 주소에 직접 액세스할 수 있어야 합니다. 자세한 내용은 이 문서의 CDN 뒤의 부하 분산기 섹션을 참고하세요.
- 원하는 DNS 전 세계 전파 검사기를 사용하여 전 세계에서 모든 관련 DNS 레코드가 올바르고 일관되게 확인되는지 확인하는 것이 좋습니다.
구성 변경사항 확인
DNS 레코드를 구성한 후 새 인증서를 만들고 기존 인증서와 함께 부하 분산기에 연결하여 레코드가 올바른지 확인할 수 있습니다. 이 단계에서는 CA와 즉시 인증서 프로비저닝 확인을 강제하여 구성 변경사항을 몇 분 이내에 확인할 수 있습니다. 이 옵션을 사용하지 않으면 기존 인증서의 자동 갱신이 며칠 또는 몇 주가 걸릴 수 있으며 설정에 대한 불확실성이 남게 됩니다.
인증서 상태가 ACTIVE
이면 인증서가 발급되었음을 나타내므로 DNS 구성이 올바르다는 의미입니다. 이 시점에서 동일한 도메인에 두 개의 별도 인증서가 생기지 않도록 이전 인증서를 삭제하는 것이 좋습니다. 이 프로세스는 부하 분산기로의 트래픽을 중단하지 않습니다.
새 인증서는 유효성 검사 도구로 사용됩니다. 인증서가 생성되면 MPIC를 사용한 다각도 도메인 유효성 검사가 설정에 올바르게 작동하는지 확인할 수 있습니다.
CDN 뒤의 부하 분산기
CDN이 사용 설정된 부하 분산기의 경우 요청 경로에 있는 일부 서드 파티 CDN 제공업체가 유효성 검사 요청이 성공하지 못하도록 할 수 있습니다. CDN 제공업체가 HTTP(S) 트래픽을 적극적으로 프록시하는 경우 발생할 수 있습니다.
이 경우 인증서를 인증서 관리자로 이전하고 DNS 승인 메서드를 사용하여 Google 관리형 인증서를 프로비저닝하는 것이 좋습니다. 후자의 접근 방식은 CA가 부하 분산기에 연결할 필요가 없습니다.
자체 관리형 SSL 인증서 문제 해결
이 가이드에서는 자체 관리형 SSL 인증서의 구성 문제를 해결하는 방법을 설명합니다.
인증서를 파싱할 수 없음
Google Cloud 에는 PEM 형식의 인증서가 필요합니다. 인증서가 PEM 형식인 경우 다음을 확인합니다.
CERTIFICATE_FILE
을 인증서 파일의 경로로 바꾸고 다음 OpenSSL 명령어를 사용하여 인증서의 유효성을 검사할 수 있습니다.
openssl x509 -in CERTIFICATE_FILE -text -noout
OpenSSL에서 인증서를 파싱할 수 없는 경우:
- 도움이 필요하면 CA에 문의하세요.
- 새 비공개 키 및 인증서를 만듭니다.
일반 이름 또는 주체 대체 이름 누락
Google Cloud 를 사용하려면 인증서에 일반 이름(CN
) 또는 주체 대체 이름 (SAN
) 속성이 하나 이상 있어야 합니다. 자세한 내용은 CSR 만들기를 참고하세요.
두 속성이 모두 없는 경우 자체 관리형 인증서를 만들려고 하면 다음과 같은 오류 메시지가 표시됩니다. Google Cloud
ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
- The SSL certificate is missing a Common Name(CN) or Subject Alternative
Name(SAN).
비공개 키를 파싱할 수 없음
Google Cloud 에는 비공개 키 기준을 충족하는 PEM 형식의 비공개 키가 필요합니다.
다음 OpenSSL 명령어를 사용하여 비공개 키의 유효성을 검사할 수 있습니다. 이때 PRIVATE_KEY_FILE
을 비공개 키의 경로로 바꿉니다.
openssl rsa -in PRIVATE_KEY_FILE -check
다음 응답은 비공개 키에 문제가 있음을 나타냅니다.
unable to load Private Key
Expecting: ANY PRIVATE KEY
RSA key error: n does not equal p q
RSA key error: d e not congruent to 1
RSA key error: dmp1 not congruent to d
RSA key error: dmq1 not congruent to d
RSA key error: iqmp not inverse of q
이 문제를 해결하려면 새 비공개 키와 인증서를 만들어야 합니다.
암호가 포함된 비공개 키
OpenSSL에서 암호를 묻는 메시지가 표시되면 Google Cloud에서 암호를 사용하기 전에 비공개 키에서 암호를 삭제해야 합니다. 다음 OpenSSL 명령어를 사용할 수 있습니다.
openssl rsa -in PRIVATE_KEY_FILE \ -out REPLACEMENT_PRIVATE_KEY_FILE
자리표시자를 유효한 값으로 바꿉니다.
PRIVATE_KEY_FILE
: 암호로 보호되는 비공개 키의 경로REPLACEMENT_PRIVATE_KEY_FILE
: 일반 텍스트 비공개 키의 복사본을 저장할 경로
중간 인증서 만료
중간 인증서가 서버(리프) 인증서 전에 만료되면 CA가 권장사항을 따르지 않을 수 있습니다.
중간 인증서가 만료되면Google Cloud 에서 사용되는 리프 인증서가 무효화될 수 있습니다. 다음과 같이 SSL 클라이언트에 따라 달라집니다.
- 일부 SSL 클라이언트는 리프 인증서의 만료 시간만 확인하고 만료된 중간 인증서를 무시합니다.
- 일부 SSL 클라이언트는 만료된 중간 인증서가 있는 체인을 유효하지 않은 것으로 취급하고 경고를 표시합니다.
이 문제를 해결하려면 다음 안내를 따르세요.
- CA가 새 중간 인증서로 전환될 때까지 기다립니다.
- 새 인증서를 요청합니다.
- 새 키를 사용하여 새 인증서를 다시 업로드합니다.
또한 CA에서 중간 인증서의 교차 서명을 허용할 수도 있습니다. CA에 문의하여 확인합니다.
RSA 공개 지수가 너무 큼
RSA 공개 지수가 65537보다 크면 다음 오류 메시지가 표시됩니다. RFC 4871에 지정된 대로 65537
을 사용해야 합니다.
ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
- The RSA public exponent is too large.
대상 프록시에서 SSL 인증서 삭제
다음 단계에서는 대상 https 프록시에 연결된 단일 SSL 인증서를 삭제하는 방법을 보여줍니다.
target-https-proxy를 임시 파일로 내보냅니다.
gcloud compute target-https-proxies export TARGET_PROXY_NAME > /tmp/proxy
/tmp/proxy
파일을 수정하고 다음 줄을 삭제합니다.sslCertificates: - https://www.googleapis.com/compute/v1/projects/...
/tmp/proxy
파일을 가져옵니다.gcloud compute target-https-proxies import TARGET_PROXY_NAME \ --source=/tmp/proxy
선택사항: SSL 인증서를 삭제합니다.
gcloud compute ssl-certificates delete SSL_CERT_NAME
다음을 바꿉니다.
TARGET_PROXY_NAME
: 대상 https 프록시 리소스의 이름SSL_CERT_NAME
: SSL 인증서의 이름