이 페이지에서는 인증 기관 서비스를 사용하여 인증서를 요청하는 단계를 설명합니다.
Google Distributed Cloud (GDC) 에어 갭 내에서 신뢰를 구축하고 통신을 보호하려면 인증 기관 서비스에서 ACME 지원 또는 중지 인증서를 요청하세요.
시작하기 전에
인증서를 요청하는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 인증 기관 서비스 관리자(certificate-authority-service-admin
) 역할을 부여해 달라고 요청하세요.
kubeconfig 파일 가져오기
관리 API 서버에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.
관리 API 서버의 kubeconfig 파일이 없는 경우 로그인 및 생성합니다.
관리 API 서버의 kubeconfig 파일 경로를 사용하여 이 안내의 MANAGEMENT_API_SERVER_KUBECONFIG
를 바꿉니다.
ACME 모드가 사용 설정된 CA를 사용하여 인증서 요청
인증 기관이 ACME 모드로 호스팅되는 경우 준비가 완료된 후 상태에 ACME 서버 URL을 출력합니다.
분산 클라우드 환경에서 CA ACME 서버 URL을 수집합니다.
kubectl get certificateauthorities CA_NAME -n USER_PROJECT_NAMESPACE -ojson | jq -r '.status.acme.uri'
다음을 바꿉니다.
CA_NAME
: CA의 이름입니다. 루트 CA 또는 하위 CA일 수 있습니다.USER_PROJECT_NAMESPACE
: 사용자 프로젝트가 있는 네임스페이스의 이름입니다.
ACME 모드가 사용 중지된 CA를 사용하여 인증서 요청
ACME 모드가 사용 중지된 인증서 요청을 만들려면 CertificateRequest
리소스를 만들어 오프라인 Distributed Cloud 인스턴스에 적용해야 합니다. 이 작업을 실행하는 두 가지 방법은 다음과 같습니다.
CertificateResource
를 만들고 리소스에 CSR을 포함합니다.- GDC 자동 생성 비공개 키를 사용하여
CertificateResource
를 만들고 인증서 구성을 맞춤 값으로 제공합니다.
CSR을 사용하여 인증서 요청
CertificateRequest
리소스를 만들고cert-request.yaml
이라는 YAML 파일로 저장합니다. 비공개 키를 사용하여 인증서 서명 요청 (CSR)을 만들고 리소스에 추가합니다.apiVersion: pki.security.gdc.goog/v1 kind: CertificateRequest metadata: name: CERT_REQ_NAME namespace: USER_PROJECT_NAMESPACE spec: certificateAuthorityRef: name: CA_NAME namespace: USER_PROJECT_NAMESPACE csr: CSR signedCertificateSecret: SECRET_NAME
다음 변수를 바꿉니다.
변수 설명 CERT_REQ_NAME 인증서의 이름입니다. USER_PROJECT_NAMESPACE 사용자 프로젝트가 있는 네임스페이스의 이름입니다. CA_NAME CA의 이름입니다. 루트 CA 또는 하위 CA일 수 있습니다. CSR CA를 사용하여 서명할 인증서 서명 요청입니다. SECRET_NAME 비공개 키와 서명된 CA 인증서가 포함된 Kubernetes 보안 비밀의 이름입니다. 커스텀 리소스를 Distributed Cloud 인스턴스에 적용합니다.
kubectl apply -f cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
MANAGEMENT_API_SERVER_KUBECONFIG
를 관리 API 서버의 kubeconfig 파일 경로로 바꿉니다.인증서 요청의 준비 상태를 확인합니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'
출력은 다음과 비슷합니다.
{ "lastTransitionTime": "2025-01-27T12:22:59Z", "message": "Certificate is issued", "observedGeneration": 1, "reason": "Issued", "status": "True", "type": "Ready" }
인증서 보안 비밀 이름을 가져옵니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r '.spec.signedCertificateSecret'
출력에 서명된 인증서가 포함된
SECRET_NAME
가 표시됩니다.test-jwk-1
자동 생성 키를 사용하여 인증서 요청
CertificateRequest
리소스를 만들고cert-request.yaml
이라는 YAML 파일로 저장합니다. 선택한 인증서 값을 입력합니다.apiVersion: pki.security.gdc.goog/v1 kind: CertificateRequest metadata: name: CERT_REQ_NAME namespace: USER_PROJECT_NAMESPACE spec: certificateAuthorityRef: name: CA_NAME namespace: USER_PROJECT_NAMESPACE certificateConfig: subjectConfig: commonName: COMMON_NAME organization: ORGANIZATION locality: LOCALITY state: STATE country: COUNTRY dnsNames: - DNS_NAMES ipAddresses: - IP_ADDRESSES rfc822Names: - RFC822NAMES uris: - URIS signedCertificateSecret: SECRET_NAME
COMMON_NAME
을 인증서의 일반 이름으로 바꿉니다.다음 선택적 변수를 바꿉니다.
CertificateRequest
리소스에 다음 값 중 하나 이상을 포함해야 합니다.변수 설명 ORGANIZATION 인증서에 사용할 조직입니다. LOCALITY 인증서의 지역입니다. STATE 인증서에 사용할 주 또는 도입니다. COUNTRY 인증서의 국가입니다. DNS_NAMES DNSNames
는 인증서에 설정할dNSName subjectAltNames
목록입니다.IP_ADDRESS 인증서에 설정할 ipAddress subjectAltNames
목록입니다.RFC822_NAMES 인증서에 설정할 rfc822Name subjectAltNames
목록입니다.URIS 인증서에 설정할 uniformResourceIdentifier subjectAltNames
목록입니다.커스텀 리소스를 Distributed Cloud 인스턴스에 적용합니다.
kubectl apply -f cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
인증서 요청의 준비 상태를 확인합니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'
출력은 다음과 비슷합니다.
{ "lastTransitionTime": "2025-01-27T12:22:59Z", "message": "Certificate is issued", "observedGeneration": 1, "reason": "Issued", "status": "True", "type": "Ready" }
인증서 보안 비밀 이름을 가져옵니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r '.spec.signedCertificateSecret'
출력에 서명된 인증서가 포함된
SECRET_NAME
가 표시됩니다.test-jwk-1
인증서 요청 나열
certificaterequests
매개변수를 사용하여 모든 CertificateRequest
리소스를 나열합니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequests
결과는 다음과 유사합니다.
NAMESPACE NAME READY AGE
foo cert-req True 30s