인증서 취소

이 문서에서는 인증 기관 서비스를 사용하여 인증서를 취소하는 방법을 설명합니다. 인증서를 취소하면 만료일 전에 무효화되어 인증에 사용할 수 없습니다. 비공개 키가 손상되었거나, 인증서가 새 인증서로 대체되었거나, 인증서가 더 이상 필요하지 않은 경우 (예: 인증서가 발급된 서비스가 폐기된 경우) 인증서를 취소할 수 있습니다.

이 문서는 프로젝트 내에서 인증서 수명 주기를 관리하는 애플리케이션 개발자 또는 데이터 과학자와 같은 애플리케이션 운영자 그룹의 사용자를 대상으로 합니다. 자세한 내용은 GDC 오프라인 문서의 대상을 참고하세요.

인증서 해지 정보

CA 서비스는 해지 인증서 목록 (CRL)을 게시하여 인증서 해지를 지원합니다. CRL은 취소되었으며 더 이상 신뢰할 수 없는 인증서의 일련번호 목록입니다. 기본적으로 새 CRL은 15분마다 게시됩니다. 또한 인증서 취소가 성공하면 새 CRL 생성이 자동으로 트리거됩니다.

CA Service에서 발급한 인증서에는 CRL 배포 지점 (CDP)이라는 확장 프로그램이 포함됩니다. 이 확장 프로그램에는 해당 인증서의 CRL을 찾아 다운로드할 수 있는 URL이 포함되어 있습니다. 클라이언트 애플리케이션은 이 URL을 사용하여 CRL을 가져오고 인증서의 일련번호가 있는지 확인합니다. 일련번호가 목록에 표시되면 인증서가 유효하지 않은 것으로 간주되며 연결을 거부해야 합니다.

시작하기 전에

인증서를 취소하기 전에 필요한 권한과 kubeconfig 파일이 있는지 확인하세요.

필수 권한

인증서를 취소하는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 CA 서비스 작업 관리자(certificate-authority-service-operation-manager) 역할을 부여해 달라고 요청하세요. 역할에 대한 자세한 내용은 역할 정의를 참고하세요.

kubeconfig 파일 가져오기

관리 API 서버에 대해 명령어를 실행하려면 다음을 실행하세요.

  1. 관리 API 서버의 kubeconfig 파일이 없는 경우 로그인 및 생성합니다.

  2. 관리 API 서버의 kubeconfig 파일 경로를 사용하여 이 안내의 MANAGEMENT_API_SERVER_KUBECONFIG를 바꿉니다.

인증서 취소

인증서 취소 방법은 발급 인증 기관 (CA)에 ACME 모드가 사용 설정되어 있는지에 따라 다릅니다. 인증서를 취소하면 인증서가 만료될 때까지 해당 CA의 이후 모든 CRL에 인증서의 일련번호가 표시됩니다.

ACME 지원 CA에서 인증서 취소

ACME 지원 CA는 준비가 되면 상태에 고유한 ACME 서버 URL을 노출합니다. ACME 지원 CA에서 인증서를 취소하려면 ACME 클라이언트 도구를 사용하여 ACME 프로토콜을 통해 이 URL과 상호작용해야 합니다.

ACME 지원 CA에서 인증서를 취소합니다.

  1. 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: 관리 API 서버의 kubeconfig 파일 경로
    • CA_NAME: ACME 지원 CA (루트 또는 하위)의 이름입니다.
    • USER_PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다.
  2. 선택한 ACME 클라이언트 도구와 획득한 URL을 사용하여 폐지 요청을 실행합니다. 자세한 내용은 특정 ACME 클라이언트의 문서를 참고하세요.

ACME가 사용 중지된 CA에서 인증서 취소

CA에서 ACME 모드가 사용 중지된 경우 RevokeCertificateRequest 커스텀 리소스를 만들어 적용하여 인증서를 취소합니다.

  1. 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입니다.
  2. 커스텀 리소스를 적용합니다.

    kubectl apply -f revoke-cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
    

    MANAGEMENT_API_SERVER_KUBECONFIG를 관리 API 서버의 kubeconfig 파일 경로로 바꿉니다.

  3. 인증서 취소 요청의 준비 상태를 확인합니다.

    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: 관리 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: 관리 API 서버의 kubeconfig 파일 경로
  • USER_PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다.

결과는 다음과 유사합니다.

NAMESPACE    NAME                      READY   AGE
foo          revoke-cert-req           True    30s