En este documento se describen los pasos para crear una autoridad de certificación raíz (CA) 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 el anclaje de confianza de la PKI. Para usar certificados en una PKI, los dispositivos, el software y los componentes deben confiar en la CA raíz. Esta configuración garantiza la confianza en todos los certificados emitidos por la CA raíz, lo que permite confiar en la propia PKI.
Este documento está dirigido a los miembros del grupo de operadores de aplicaciones, como los desarrolladores de aplicaciones o los científicos de datos, que gestionan los ciclos de vida de los certificados en sus proyectos. Para obtener más información, consulta el artículo Audiencias de la documentación de GDC air-gapped.
Antes de empezar
Antes de crear una autoridad de certificación raíz, debes solicitar los permisos necesarios y preparar tu entorno.
Solicitar roles de IAM
Para crear, actualizar y eliminar una autoridad de certificación raíz, ponte en contacto con el administrador de IAM de tu organización y solicita el rol Administrador del servicio de autoridad de certificación (certificate-authority-service-admin).
Preparar tu entorno
Descarga e instala la CLI de gdcloud, si aún no lo has hecho.
Genera un archivo kubeconfig para configurar el acceso a
kubectl.
Crear una autoridad de certificación raíz
Para crear una CA raíz, aplica un recurso personalizado a tu instancia de Distributed Cloud air-gapped.
Crea un recurso
CertificateAuthorityy guárdalo como un archivo YAML llamadoroot-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_ENABLEDSustituye las siguientes variables:
Variable Descripción ROOT_CA_NAME El nombre de la CA raíz. USER_PROJECT_NAMESPACE El nombre del espacio de nombres donde reside el proyecto del usuario. COMMON_NAME El nombre común del certificado AC. DURATION El periodo de validez solicitado del certificado AC. Especifica la duración en horas (por ejemplo, 1000h). No se admiten unidades como días (d) o años (y).SECRET_NAME El nombre del secreto de Kubernetes que contiene la clave privada y el certificado de la CA firmado. Las siguientes variables son valores opcionales:
Variable Descripción RENEW_BEFORE El tiempo de rotación antes de que caduque el certificado AC. ORGANIZATION La organización que se usará en el certificado. ORGANIZATIONAL_UNITS Las unidades organizativas que se usarán en el certificado. COUNTRIES Los países que se usarán en el certificado. LOCALITIES Las ciudades que se usarán en el certificado. PROVINCES Los estados o provincias que se usarán en el certificado. STREET_ADDRESSES Las direcciones que se usarán en el certificado. POSTAL_CODES Los códigos postales que se usarán en el certificado. EXTENDED_KEY_USAGE El uso de clave ampliado del certificado. Si se proporciona, los valores permitidos son serverAuthyclientAuth.KEY_ALGORITHYM El algoritmo de clave privada que se usa para este certificado. Los valores permitidos son RSA,Ed25519oECDSA. Si no se proporciona el tamaño, el valor predeterminado es 256 paraECDSAy 2048 paraRSA. El tamaño de la clave se ignora en el caso deEd25519.KEY_SIZE El tamaño, en bits, de la clave privada de este certificado depende de el algoritmo. RSApermite 2048, 3072, 4096 u 8192 (el valor predeterminado es 2048).ECDSApermite 256, 384 o 521 (el valor predeterminado es 256).Ed25519ignora el tamaño.ACME_ENABLED Si se define como true, la CA se ejecuta en el modo ACME y genera la URL del servidor ACME. A continuación, puedes usar el cliente y el protocolo ACME para gestionar los certificados.Aplica el recurso personalizado a tu instancia de Distributed Cloud:
kubectl apply -f root-ca.yaml –kubeconfig MANAGEMENT_API_SERVER_KUBECONFIGSustituye
MANAGEMENT_API_SERVER_KUBECONFIGpor la ruta al archivo kubeconfig del servidor de la API de gestión.Verifica que la CA raíz esté lista. Normalmente, la CA tarda unos 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" }
Mostrar las CA
Para mostrar todos los recursos del servicio de autoridad de certificación de tu instancia de Distributed Cloud air-gapped, sigue estos pasos:
Usa el parámetro certificateauthorities para mostrar todos los recursos 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