Nesta página, descrevemos as etapas para criar uma autoridade de certificação (CA) raiz no Google Distributed Cloud (GDC) isolado por air-gap.
Uma AC raiz, que fica no topo da hierarquia da infraestrutura de chave pública (PKI), estabelece a âncora de confiança para a PKI. Para usar certificados em uma PKI, dispositivos, softwares e componentes precisam confiar na AC raiz. Essa configuração garante a confiança em todos os certificados emitidos pela CA raiz, permitindo a confiança na própria ICP.
Antes de começar
Para receber as permissões necessárias para criar uma autoridade de certificação raiz, peça ao administrador do IAM da organização para conceder a você o papel de administrador do serviço de autoridade de certificação (certificate-authority-service-admin
). Para mais informações sobre papéis, consulte
Definições de papéis.
Receber o arquivo kubeconfig
Para executar comandos no servidor da API Management, verifique se você tem os seguintes recursos:
Faça login e gere o arquivo kubeconfig para o servidor da API Management se você não tiver um.
Use o caminho para o arquivo kubeconfig do servidor da API Management para substituir
MANAGEMENT_API_SERVER_KUBECONFIG
nestas instruções.
Criar uma autoridade certificadora raiz
Para criar uma CA raiz, aplique um recurso personalizado à sua instância isolada do Distributed Cloud.
Crie um recurso
CertificateAuthority
e salve-o como um arquivo YAML chamadoroot-ca.yaml
:apiVersion: pki.security.gdc.goog/v1 kind: CertificateAuthority metadata: name: ROOT_CA_NAME namespace: USER_PROJECT_NAMESPACE spec: caProfile: commonName: COMMON_NAME duration: DURATION renewBefore: RENEW_BEFORE organizations: - ORGANIZATION organizationalUnits: - ORGANIZATIONAL_UNITS countries: - COUNTRIES localities: - LOCALTIES provinces: - PROVINCES streetAddresses: - STREET_ADDRESSES postalCodes: - POSTAL_CODES caCertificate: selfSignedCA: {} certificateProfile: keyUsage: - digitalSignature - keyCertSign - crlSign extendedKeyUsage: - EXTENDED_KEY_USAGE secretConfig: secretName: SECRET_NAME privateKeyConfig: algorithm: KEY_ALGORITHM size: KEY_SIZE acme: enabled: ACME_ENABLED
Substitua as seguintes variáveis:
Variável Descrição ROOT_CA_NAME O nome da CA raiz. USER_PROJECT_NAMESPACE O nome do namespace em que o projeto do usuário está localizado. COMMON_NAME O nome comum do certificado da CA. DURATION O ciclo de vida solicitado do certificado da CA. SECRET_NAME O nome do secret do Kubernetes que contém a chave privada e o certificado de CA assinado. As variáveis a seguir são valores opcionais:
Variável Descrição RENEW_BEFORE O tempo de rotação antes da expiração do certificado de CA. ORGANIZATION Organização a ser usada no certificado. ORGANIZATIONAL_UNITS Unidades organizacionais a serem usadas no certificado. COUNTRIES Países a serem usados no certificado. LOCALITIES Cidades a serem usadas no certificado. PROVINCES Estado ou províncias a serem usadas no certificado. STREET_ADDRESSES Endereços de rua a serem usados no certificado. POSTAL_CODES Códigos postais a serem usados no certificado. EXTENDED_KEY_USAGE O uso estendido da chave para o certificado. Se fornecidos, os valores permitidos são serverAuth
eclientAuth
.KEY_ALGORITHYM O algoritmo de chave privada usado para este certificado. Os valores permitidos são RSA
,Ed25519
ouECDSA
. Se o tamanho não for fornecido, o padrão será 256 paraECDSA
e 2048 paraRSA
. O tamanho da chave é ignorado paraEd25519
.KEY_SIZE O tamanho, em bits, da chave privada para esse certificado depende do algoritmo. RSA
permite 2048, 3072, 4096 ou 8192 (padrão 2048).ECDSA
permite 256, 384 ou 521 (padrão 256).Ed25519
ignora o tamanho.ACME_ENABLED Se definido como true
, a CA será executada no modo ACME e vai gerar o URL do servidor ACME. Em seguida, use o cliente e o protocolo ACME para gerenciar certificados.Aplique o recurso personalizado à sua instância do Distributed Cloud:
kubectl apply -f root-ca.yaml –kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
Substitua
MANAGEMENT_API_SERVER_KUBECONFIG
pelo caminho para o arquivo kubeconfig do servidor da API Management.Verifique se a CA raiz está pronta. Normalmente, leva cerca de 40 minutos para a CA ficar pronta:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthority.pki.security.gdc.goog/ROOT_CA_NAME -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))
A saída será assim:
{ "lastTransitionTime": "2025-01-24T17:09:19Z", "message": "CA reconciled", "observedGeneration": 2, "reason": "Ready", "status": "True", "type": "Ready" }
Listar CAs
Para listar todos os recursos do Certificate Authority Service na sua instância isolada do Distributed Cloud, faça o seguinte:
Use o parâmetro certificateauthorities
para listar todos os recursos CertificateAuthority
:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthorities
A saída será assim:
NAMESPACE NAME READY REASON AGE
foo root-ca True Ready 7h24m
foo sub-ca True Ready 7h24m