이 문서에서는 Certificate Authority Service를 사용하여 인증서를 취소하는 방법을 설명합니다. 인증서를 취소하면 만료일 전에 인증서가 무효화되어 인증에 사용할 수 없습니다. 비공개 키가 손상되었거나, 인증서가 새 인증서로 대체되었거나, 인증서가 더 이상 필요하지 않은 경우 (예: 인증서가 발급된 서비스가 사용 중지된 경우) 인증서를 취소할 수 있습니다.
이 문서는 프로젝트 내에서 인증서 수명 주기를 관리하는 애플리케이션 개발자 또는 데이터 과학자와 같은 애플리케이션 운영자 그룹 내 사용자를 대상으로 합니다. 자세한 내용은 GDC 에어 갭 문서 대상을 참조하세요.
인증서 해지 정보
CA Service는 해지 인증서 목록 (CRL)을 게시하여 인증서 해지를 지원합니다. CRL은 취소되었으며 더 이상 신뢰할 수 없는 인증서의 일련번호 목록입니다. 기본적으로 새 CRL은 15분마다 게시됩니다. 또한 인증서가 취소되면 새 CRL 생성이 자동으로 트리거됩니다.
CA Service에서 발급한 인증서에는 CRL 배포 지점 (CDP)이라는 확장 프로그램이 포함됩니다. 이 확장 프로그램에는 해당 인증서의 CRL을 찾고 다운로드할 수 있는 URL이 포함되어 있습니다. 클라이언트 애플리케이션은 이 URL을 사용하여 CRL을 가져오고 인증서의 일련번호가 있는지 확인합니다. 일련번호가 목록에 표시되면 인증서가 유효하지 않은 것으로 간주되고 연결이 거부되어야 합니다.
시작하기 전에
인증서를 취소하려면 먼저 필요한 권한을 요청하고 환경을 준비해야 합니다.
IAM 역할 요청
인증서를 취소하고 취소 요청을 보려면 IAM 조직 관리자에게 연락하여 인증 기관의 프로젝트 네임스페이스에서 CA Service 작업 관리자(certificate-authority-service-operation-manager) 역할을 요청하세요.
개발 환경 준비
kubeconfig 파일을 생성하여
kubectl액세스를 구성합니다.
인증서 취소
인증서를 취소하는 방법은 발급 인증 기관 (CA)에 ACME 모드가 사용 설정되어 있는지 여부에 따라 다릅니다. 인증서를 취소하면 인증서가 만료될 때까지 해당 CA의 이후 모든 CRL에 일련번호가 표시됩니다.
ACME 지원 CA에서 인증서 취소
ACME가 사용 설정된 각 CA는 준비가 되면 상태에 고유한 ACME 서버 URL을 노출합니다. ACME 지원 CA에서 인증서를 취소하려면 ACME 클라이언트 도구를 사용하여 ACME 프로토콜을 통해 이 URL과 상호작용해야 합니다.
ACME 지원 CA에서 인증서를 취소합니다.
CA의 ACME 서버 URL을 가져옵니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ get certificateauthorities CA_NAME \ -n USER_PROJECT_NAMESPACE \ -ojson | jq -r '.status.acme.uri'다음을 바꿉니다.
MANAGEMENT_API_SERVER_KUBECONFIG: Management API 서버의 kubeconfig 파일 경로입니다.CA_NAME: ACME 지원 CA (루트 또는 하위)의 이름입니다.USER_PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다.
원하는 ACME 클라이언트 도구와 함께 가져온 URL을 사용하여 취소 요청을 실행합니다. 자세한 내용은 특정 ACME 클라이언트의 문서를 참조하세요.
ACME가 사용 중지된 CA에서 인증서 취소
CA에서 ACME 모드가 사용 중지된 경우 RevokeCertificateRequest 커스텀 리소스를 만들고 적용하여 인증서를 취소합니다.
RevokeCertificateRequest커스텀 리소스 YAML 파일 (예:revoke-cert-request.yaml)을 만듭니다.apiVersion: pki.security.gdc.goog/v1 kind: RevokeCertificateRequest metadata: name: REVOKE_CERT_REQ_NAME namespace: USER_PROJECT_NAMESPACE spec: certificateRequestRef: name: CERT_REQ_NAME namespace: USER_PROJECT_NAMESPACE reason: REASON다음을 바꿉니다.
REVOKE_CERT_REQ_NAME: 취소 요청의 사용자 정의 이름입니다.USER_PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다.CERT_REQ_NAME: 취소할 인증서와 연결된CertificateRequest리소스의 이름입니다.REASON: 취소 이유입니다. 유효한 이유는Unspecified,KeyCompromise,CaCompromise,AffiliationChanged,Superseded,CessationOfOperation,CertificateHold,RemoveFromCrl,PrivilegeWithdrawn,AaCompromise입니다.
커스텀 리소스를 적용합니다.
kubectl apply -f revoke-cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIGMANAGEMENT_API_SERVER_KUBECONFIG를 Management API 서버의 kubeconfig 파일 경로로 바꿉니다.
인증서 취소 요청의 준비 상태를 확인합니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ -n USER_PROJECT_NAMESPACE \ get revokecertificaterequest.pki.security.gdc.goog/REVOKE_CERT_REQ_NAME \ -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'다음을 바꿉니다.
MANAGEMENT_API_SERVER_KUBECONFIG: Management API 서버의 kubeconfig 파일 경로입니다.USER_PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다.REVOKE_CERT_REQ_NAME: 취소 요청의 이름입니다.
결과는 다음과 유사합니다.
{ "lastTransitionTime": "2025-08-19T23:20:22Z", "message": "RevokeCertificateRequest reconciled", "observedGeneration": 1, "reason": "Ready", "status": "True", "type": "Ready" }프로세스가 완료되고 인증서의 일련번호가 다음에 생성되는 CRL에 추가됩니다.
취소된 인증서 요청 나열
프로젝트 네임스페이스의 모든 RevokeCertificateRequest 리소스를 나열합니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
-n USER_PROJECT_NAMESPACE \
get revokecertificaterequests
다음을 바꿉니다.
MANAGEMENT_API_SERVER_KUBECONFIG: Management API 서버의 kubeconfig 파일 경로입니다.USER_PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다.
결과는 다음과 유사합니다.
NAMESPACE NAME READY AGE
foo revoke-cert-req True 30s