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

Antes de poder criar uma autoridade de certificação raiz, certifique-se de que tem as autorizações necessárias e um ficheiro kubeconfig.

Autorizações necessárias

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, faça o seguinte:

  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