Crie uma autoridade de certificação de raiz

Esta página descreve os passos para criar uma autoridade de certificação (AC) de raiz no Google Distributed Cloud (GDC) air-gapped.

Uma CA raiz, que se encontra no topo da hierarquia da infraestrutura de chave pública (PKI), estabelece a âncora de confiança para a PKI. Para usar certificados numa PKI, os dispositivos, o software e os componentes têm de confiar na AC raiz. Esta configuração garante a confiança em todos os certificados emitidos pela AC de raiz, o que permite a confiança na própria PKI.

Antes de começar

Para receber as autorizações necessárias para criar uma autoridade de certificação de raiz, peça ao administrador de IAM da sua organização para lhe conceder a função de administrador do Certificate Authority Service (certificate-authority-service-admin). Para mais informações sobre as funções, consulte o artigo Definições de funções.

Obtenha o ficheiro kubeconfig

Para executar comandos no servidor da API Management, certifique-se de que tem os seguintes recursos:

  1. Inicie sessão e gere o ficheiro kubeconfig para o servidor da API Management, se não tiver um.

  2. Use o caminho para o ficheiro kubeconfig do servidor da API Management para substituir MANAGEMENT_API_SERVER_KUBECONFIG nestas instruções.

Crie uma autoridade de certificação de raiz

Para criar uma AC raiz, aplique um recurso personalizado à sua instância isolada do Distributed Cloud.

  1. Crie um recurso CertificateAuthority e guarde-o como um ficheiro YAML denominado root-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 AC de raiz.
    USER_PROJECT_NAMESPACE O nome do espaço de nomes onde reside o projeto do utilizador.
    COMMON_NAME O nome comum do certificado da AC.
    DURATION A duração total pedida do certificado da CA.
    SECRET_NAME O nome do segredo do Kubernetes que contém a chave privada e o certificado da CA assinado.

    As seguintes variáveis são valores opcionais:

    Variável Descrição
    RENEW_BEFORE O tempo de rotação antes de o certificado da CA expirar.
    ORGANIZATION Organização a usar no certificado.
    ORGANIZATIONAL_UNITS Unidades organizacionais a usar no certificado.
    COUNTRIES Países a usar no certificado.
    LOCALITIES Cidades a usar no certificado.
    PROVINCES Estados ou províncias a usar no certificado.
    STREET_ADDRESSES Moradas a usar no certificado.
    POSTAL_CODES Códigos postais a usar no certificado.
    EXTENDED_KEY_USAGE A utilização alargada da chave para o certificado. Se for fornecido, os valores permitidos são serverAuth e clientAuth.
    KEY_ALGORITHYM O algoritmo de chave privada usado para este certificado. Os valores permitidos são RSA, Ed25519 ou ECDSA. Se o tamanho não for fornecido, o valor predefinido é 256 para ECDSA e 2048 para RSA. O tamanho da chave é ignorado para Ed25519.
    KEY_SIZE O tamanho, em bits, da chave privada deste certificado depende do algoritmo. RSA permite 2048, 3072, 4096 ou 8192 (predefinição: 2048). ECDSA permite 256, 384 ou 521 (predefinição 256). Ed25519 ignora o tamanho.
    ACME_ENABLED Se estiver definido como true, a AC é executada no modo ACME e produz o URL do servidor ACME. Em seguida, pode usar o cliente e o protocolo ACME para gerir certificados.

  2. 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 ficheiro kubeconfig do servidor da API Management.

  3. Verifique a prontidão da AC de raiz. Normalmente, a AC demora cerca de 40 minutos a 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))
    

    O resultado tem um aspeto semelhante ao seguinte:

    {
      "lastTransitionTime": "2025-01-24T17:09:19Z",
      "message": "CA reconciled",
      "observedGeneration": 2,
      "reason": "Ready",
      "status": "True",
      "type": "Ready"
    }
    

Apresente ACs

Para apresentar uma lista de todos os recursos do serviço de autoridade de certificação 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

O resultado tem um aspeto semelhante ao seguinte:

   NAMESPACE    NAME              READY   REASON   AGE
   foo          root-ca           True    Ready    7h24m
   foo          sub-ca            True    Ready    7h24m