Crear una AC subordinada a partir de una AC externa

En esta página se describe cómo crear una autoridad de certificación (CA) subordinada que se encadena a una CA raíz externa.

Si tienes una jerarquía de infraestructura de clave pública (PKI) que contiene una CA raíz y CAs subordinadas, puedes mantener la misma CA raíz y crear una CA subordinada en el servicio de CAs que se encadene a tu CA raíz externa. La clave y las operaciones de la CA raíz externa permanecen fuera de Google Cloud. Solo puedes usar la AC raíz externa para emitir el certificado de la AC subordinada a Google Cloud. Cualquier carga de trabajo que confíe en la AC raíz externa confiará inmediatamente en la AC subordinada. Después, puedes usar la AC subordinada para emitir certificados sin tener que volver a la AC raíz externa en el tiempo de ejecución.

Antes de empezar

  • Asegúrate de tener el rol de gestión operativa del servicio de AC (roles/privateca.caManager) o el rol de administrador del servicio de AC (roles/privateca.admin) de IAM. Para obtener información, consulta Configurar políticas de gestión de identidades y accesos.
  • Identifica la CA raíz externa.
  • Define el nombre, el asunto, el periodo de validez y el tamaño de la clave de la CA subordinada. Para obtener información, consulta Determinar la configuración de la CA.

Crear una AC subordinada a partir de una AC externa

Para crear una AC subordinada a partir de una AC externa, sigue estos pasos:

  1. Generar la solicitud de firma de certificado (CSR) de la AC subordinada: el primer paso es generar una CSR para la AC subordinada y, a continuación, descargarla.

  2. Obtener el certificado de la AC subordinada firmado por la AC raíz externa: el segundo paso es enviar la CSR a la AC raíz externa para que la firme. Asegúrate de seguir las instrucciones específicas de la AC raíz externa para enviar CSRs y obtener certificados firmados.

  3. Importa el certificado de CA subordinada firmado en el servicio de CA: el último paso es subir la cadena de certificados PEM firmada mediante la CLI de Google Cloud o la consola de Google Cloud .

En la siguiente sección se explica cómo crear una CA subordinada a partir de una CA raíz externa.

Crear una CSR

Consola

  1. Ve al menú Seguridad > Servicio de autoridad de certificación en la consola de Google Cloud .

    Ir al Servicio de Autoridades de Certificación

  2. Haga clic en la pestaña Administrador de autoridades de certificación.

  3. Haz clic en Crear CA.

Selecciona el tipo de autoridad de certificación:

  1. Haz clic en Autoridad de certificación subordinada.
  2. En el campo Válido durante, introduce la duración durante la que quieres que sean válidos los certificados emitidos por el certificado de AC.
  3. Haz clic en La AC raíz es externa.
  4. Elige una de las opciones disponibles para el nivel de la AC. Para obtener más información, consulta Seleccionar los niveles de operación.
  5. En Regionalization (Regionalización), selecciona una ubicación de CA de la lista.
  6. Haz clic en Siguiente.
Configurar el nombre de sujeto de la autoridad de certificación
  1. En el campo Organización (O), introduce el nombre de tu empresa.
  2. Opcional: En el campo Unidad organizativa (UO), introduce el departamento empresarial o la unidad de negocio.
  3. Opcional: En el campo Nombre del país (C), introduce el código de dos letras del país.
  4. Opcional: En el campo Nombre del estado o de la provincia, introduce el nombre de tu estado.
  5. Opcional: En el campo Nombre de la localidad, introduce el nombre de tu ciudad.
  6. En el campo Nombre común de la autoridad de certificación (NC), introduce el nombre de la autoridad de certificación.
  7. Haz clic en Continuar.
Configurar el tamaño de clave y el algoritmo de la autoridad de certificación
  1. Elige el algoritmo de claves que mejor se adapte a tus necesidades. Para obtener información sobre cómo elegir el algoritmo de claves adecuado, consulta Elegir un algoritmo de claves.
  2. Haz clic en Continuar.
Configurar artefactos de la AC
  1. Elige si quieres usar un segmento de Cloud Storage gestionado por Google o por el cliente.
    1. En el caso de un segmento de Cloud Storage gestionado por Google, CA Service crea un segmento gestionado por Google en la misma ubicación que la CA.
    2. En el caso de un segmento de Cloud Storage gestionado por el cliente, haga clic en Examinar y seleccione uno de los segmentos de Cloud Storage.
  2. Haz clic en Continuar.
Añadir etiquetas

Los siguientes pasos son opcionales.

Si quieres añadir etiquetas a la AC, haz lo siguiente:

  1. Haz clic en Añadir elemento.
  2. En el campo Clave 1, introduce la clave de la etiqueta.
  3. En el campo Valor 1, introduce el valor de la etiqueta.
  4. Si quiere añadir otra etiqueta, haga clic en Añadir elemento. A continuación, añade la clave y el valor de la etiqueta, tal como se indica en los pasos 2 y 3.
  5. Haz clic en Continuar.
Revisa los ajustes

Revisa detenidamente todos los ajustes y haz clic en Hecho para crear la AC.

Descargar la CSR

  1. En la página Autoridad de certificación, selecciona la AC que quieras activar.
  2. Haz clic en Activar.
  3. En el cuadro de diálogo que se abre, haz clic en Descargar CSR.

    Descarga el CSR de la CA.

gcloud

  1. Para crear un grupo de ACs para la AC subordinada, ejecuta el siguiente comando. Para obtener más información, consulta Crear un pool de CAs.

    gcloud privateca pools create SUBORDINATE_POOL_ID --location=LOCATION
    

    Haz los cambios siguientes:

    • SUBORDINATE_POOL_ID: el nombre del grupo de autoridades de certificación.
    • LOCATION: la ubicación del grupo de autoridades de certificación.
  2. Para crear una AC subordinada en el grupo de ACs creado, ejecuta el siguiente comando gcloud. El comando gcloud también crea una CSR y la guarda en el archivo FILE_NAME.

      gcloud privateca subordinates create SUBORDINATE_CA_ID \
          --pool=SUBORDINATE_POOL_ID \
          --location=LOCATION \
          --create-csr --csr-output-file=FILE_NAME \
          --key-algorithm="ec-p256-sha256" \
          --subject="CN=Example Server TLS CA, O=Example LLC"
    

    Haz los cambios siguientes:

    • SUBORDINATE_CA_ID: identificador único de la AC subordinada.
    • SUBORDINATE_POOL_ID: el nombre del grupo de autoridades de certificación.
    • LOCATION: la ubicación del grupo de autoridades de certificación.
    • FILE_NAME: el nombre del archivo en el que se escribe la CSR codificada en PEM.

    La marca --key-algorithm toma el algoritmo criptográfico que quieres usar para crear una clave de Cloud HSM gestionada para la AC.

    La marca --subject toma el nombre X.501 del asunto del certificado.

    Para obtener más información sobre el comando gcloud privateca subordinates create, consulta gcloud privateca subordinates create.

Cuando se crea la CSR, se devuelve la siguiente instrucción:

Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID] and saved CSR to FILE_NAME.

Para ver la lista completa de ajustes disponibles, ejecuta el siguiente comando:

gcloud privateca subordinates create --help

Si pierde la CSR, puede volver a descargarla con el siguiente comando:

gcloud privateca subordinates get-csr SUBORDINATE_CA_ID \
    --pool=SUBORDINATE_POOL_ID \
    --location=LOCATION

Terraform

  1. Para crear un grupo de autoridades de certificación y una autoridad de certificación subordinada en ese grupo, utiliza el siguiente archivo de configuración:

    resource "google_privateca_ca_pool" "default" {
      name     = "test-ca-pool"
      location = "us-central1"
      tier     = "ENTERPRISE"
    }
    
    resource "google_privateca_certificate_authority" "sub-ca" {
      pool = google_privateca_ca_pool.default.name
      certificate_authority_id = "my-certificate-authority-sub"
      location = "us-central1"
      config {
        subject_config {
          subject {
            organization = "HashiCorp"
            common_name = "my-subordinate-authority"
          }
          subject_alt_name {
            dns_names = ["hashicorp.com"]
          }
        }
        x509_config {
          ca_options {
            is_ca = true
            # Force the sub CA to only issue leaf certs
            max_issuer_path_length = 0
          }
          key_usage {
            base_key_usage {
              cert_sign = true
              crl_sign = true
            }
            extended_key_usage {
            }
         }
       }
      }
      lifetime = "86400s"
      key_spec {
        algorithm = "RSA_PKCS1_4096_SHA256"
      }
      type = "SUBORDINATE"
    }
    
  2. Para obtener la CSR, añade la siguiente configuración.

    data "google_privateca_certificate_authority" "sub-ca-csr" {
      location = "us-central1"
      pool = google_privateca_ca_pool.default.name
      certificate_authority_id = google_privateca_certificate_authority.sub-ca.certificate_authority_id
    }
    
    output "csr" {
      value = data.google_privateca_certificate_authority.sub-ca-csr.pem_csr
    }
    
  3. Ejecuta terraform apply.

.

Firmar la CSR

Envía el archivo CSR generado al miembro de tu organización responsable de emitir certificados y pídele que lo firme. Los pasos específicos dependen de la configuración de tu organización.

Puedes experimentar con una CA raíz sencilla usando los siguientes comandos openssl:

Shell

Configura los ajustes de la nueva CA raíz.

cat > root.conf <<- EOM
[ req ]
distinguished_name = req_distinguished_name
x509_extensions    = v3_ca
prompt             = no
[ req_distinguished_name ]
commonName = Sample Root
[ v3_ca ]
subjectKeyIdentifier=hash
basicConstraints=critical, CA:true
EOM

Crea la nueva CA raíz.

openssl req -x509 -new -nodes -config root.conf -keyout rootCA.key \
  -days 3000 -out rootCA.crt -batch

Configure las extensiones que se deben añadir al nuevo certificado de CA subordinada.

cat > extensions.conf <<- EOM
basicConstraints=critical,CA:TRUE,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
extendedKeyUsage=critical,serverAuth
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOM

Firma la CSR de la AC subordinada con esta raíz.

openssl x509 -req -in FILE_NAME -CA rootCA.crt -CAkey rootCA.key \
  -CAcreateserial -out subordinate.crt -days 1095 -sha256 -extfile extensions.conf

Concatena toda la cadena de certificados en un solo archivo.

cat subordinate.crt > chain.crt
cat rootCA.crt >> chain.crt

Sube el certificado firmado.

Para activar una AC subordinada mediante un certificado firmado, haz lo siguiente:

Consola

  1. Ve a la página Servicio de autoridad de certificación en la consola deGoogle Cloud .

    Ir al Servicio de Autoridades de Certificación

  2. Haga clic en la pestaña Administrador de autoridades de certificación.

  3. En Autoridades de certificación, elige la AC subordinada que hayas creado.

  4. Haz clic en Activar.

  5. En el cuadro de diálogo que se abre, haga clic en Descargar CSR para descargar el archivo CSR codificado en PEM que puede firmar la AC emisora.

  6. Haz clic en Siguiente.

  7. En el campo Subir cadena de certificados, haz clic en Buscar.

  8. Sube el archivo de certificado firmado con la extensión .crt.

  9. Haz clic en Activate (Activar).

gcloud

gcloud privateca subordinates activate SUBORDINATE_CA_ID \
    --pool=SUBORDINATE_POOL_ID \
    --location=LOCATION \
    --pem-chain ./chain.crt

Haz los cambios siguientes:

  • SUBORDINATE_CA_ID: identificador único de la AC subordinada que quieres activar.
  • SUBORDINATE_POOL_ID: el nombre del grupo de autoridades de certificación que contiene la autoridad de certificación subordinada.
  • LOCATION: la ubicación del grupo de autoridades de certificación. Para ver la lista completa de ubicaciones, consulta Ubicaciones.

Es obligatorio usar la marca --pem-chain. Esta marca toma el archivo que contiene la lista de certificados codificados en PEM. La lista de certificados empieza con el certificado de CA actual y termina con el certificado de CA raíz.

Para obtener más información sobre el comando gcloud privateca subordinates activate, consulta gcloud privateca subordinates activate.

Se devuelve la siguiente instrucción cuando se sube el certificado firmado:

Activated certificate authority [SUBORDINATE_CA_ID].

Terraform

  1. Guarda el certificado de AC firmado de forma local como subordinate.crt.
  2. Guarda los certificados de AC del firmante de forma local como rootCA.crt.
  3. Elimina la configuración para obtener la CSR mencionada en el primer paso, ya que intenta obtener la CSR, lo que no está permitido después de la activación de la CA.
  4. Actualiza la configuración de la CA subordinada con los siguientes campos y ejecuta terraform apply.

    pem_ca_certificate     = file("subordinate.crt")
    subordinate_config {
      pem_issuer_chain {
          pem_certificates = [file("rootCA.crt")]
      }
    }
    

Si la cadena de emisores incluye más de una autoridad de certificación, especifica el valor como [file("intermediateCA.cert"), file("rootCA.crt")].

Siguientes pasos