Crea una autoridad certificadora raíz

En esta página, se describen los pasos para crear una autoridad certificadora (CA) raíz en Google Distributed Cloud (GDC) aislado.

Una CA raíz, que se encuentra en la parte superior de la jerarquía de la infraestructura de clave pública (PKI), establece la entidad de confianza para la PKI. Para usar certificados dentro de una PKI, los dispositivos, el software y los componentes deben confiar en la AC raíz. Esta configuración garantiza la confianza en todos los certificados emitidos por la CA raíz, lo que permite confiar en la PKI en sí.

Antes de comenzar

Para obtener los permisos que necesitas para crear una entidad certificadora raíz, pídele al administrador de IAM de tu organización que te otorgue el rol de administrador del servicio de entidades certificadoras (certificate-authority-service-admin). Para obtener más información sobre los roles, consulta Definiciones de roles.

Obtén el archivo kubeconfig

Para ejecutar comandos en el servidor de la API de Management, asegúrate de tener los siguientes recursos:

  1. Accede y genera el archivo kubeconfig para el servidor de la API de Management si no tienes uno.

  2. Usa la ruta de acceso al archivo kubeconfig del servidor de la API de administración para reemplazar MANAGEMENT_API_SERVER_KUBECONFIG en estas instrucciones.

Crea una autoridad certificadora raíz

Para crear una CA raíz, aplica un recurso personalizado a tu instancia aislada de Distributed Cloud.

  1. Crea un recurso CertificateAuthority y guárdalo como un archivo YAML llamado 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
    

    Reemplaza las siguientes variables:

    Variable Descripción
    ROOT_CA_NAME Nombre de la CA raíz.
    USER_PROJECT_NAMESPACE Es el nombre del espacio de nombres en el que reside el proyecto del usuario.
    COMMON_NAME Nombre común del certificado de CA.
    DURATION Es la vida útil solicitada del certificado de CA.
    SECRET_NAME Nombre del secreto de Kubernetes que contiene la clave privada y el certificado de CA firmado.

    Las siguientes variables son valores opcionales:

    Variable Descripción
    RENEW_BEFORE Es el tiempo de rotación antes de que venza el certificado de CA.
    ORGANIZATION Organización que se usará en el certificado.
    ORGANIZATIONAL_UNITS Son las unidades organizativas que se usarán en el certificado.
    COUNTRIES Son los países que se usarán en el certificado.
    LOCALITIES Son las ciudades que se usarán en el certificado.
    PROVINCES Estados o provincias que se usarán en el certificado.
    STREET_ADDRESSES Son las direcciones de la calle que se usarán en el certificado.
    POSTAL_CODES Códigos postales que se usarán en el certificado.
    EXTENDED_KEY_USAGE Es el uso extendido de la clave del certificado. Si se proporciona, los valores permitidos son serverAuth y clientAuth.
    KEY_ALGORITHYM Es el algoritmo de clave privada que se usa para este certificado. Los valores permitidos son RSA, Ed25519 o ECDSA. Si no se proporciona el tamaño, el valor predeterminado es 256 para ECDSA y 2,048 para RSA. Se ignora el tamaño de la clave para Ed25519.
    KEY_SIZE El tamaño, en bits, de la clave privada de este certificado depende del algoritmo. RSA permite 2048, 3072, 4096 u 8192 (2048 de forma predeterminada). ECDSA permite 256, 384 o 521 (256 de forma predeterminada). Ed25519 ignora el tamaño.
    ACME_ENABLED Si se configura en true, la CA se ejecuta en modo ACME y genera la URL del servidor de ACME. Luego, puedes usar el cliente y el protocolo de ACME para administrar los certificados.

  2. Aplica el recurso personalizado a tu instancia de Distributed Cloud:

    kubectl apply -f root-ca.yaml –kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
    

    Reemplaza MANAGEMENT_API_SERVER_KUBECONFIG por la ruta de acceso al archivo kubeconfig del servidor de la API de administración.

  3. Verifica que la CA raíz esté lista. Por lo general, la CA tarda alrededor de 40 minutos en estar lista:

    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))
    

    El resultado es similar al siguiente:

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

Enumera las CAs

Para enumerar todos los recursos de Certificate Authority Service en tu instancia aislada de Distributed Cloud, haz lo siguiente:

Usa el parámetro certificateauthorities para enumerar todos los recursos de CertificateAuthority:

   kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthorities

El resultado es similar al siguiente:

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