Crea una AC subordinada a partir de una AC externa

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

Si tienes una jerarquía de infraestructura de clave pública (PKI) existente 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 CA que se encadena 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 CA raíz externa para emitir el certificado de la AC subordinada a Google Cloud. La CA subordinada confía de inmediato en cualquier carga de trabajo que confíe en la CA raíz externa. Luego, puedes usar la CA subordinada para emitir certificados sin necesidad de volver a la CA raíz externa en el tiempo de ejecución.

Antes de comenzar

  • Asegúrate de tener el rol de IAM de administrador de operaciones del servicio de CA (roles/privateca.caManager) o de administrador del servicio de CA (roles/privateca.admin). Para obtener información, consulta Configura políticas de IAM.
  • Identifica la CA raíz externa.
  • Define el nombre, el asunto, el período de validez y el tamaño de la clave para la CA subordinada. Para obtener información, consulta Determina la configuración de la CA.

Crea una CA subordinada a partir de una CA externa

La creación de una CA subordinada a partir de una CA externa incluye los siguientes pasos:

  1. Genera la solicitud de firma de certificado (CSR) de la CA subordinada: El primer paso es generar una CSR para la CA subordinada y, luego, descargarla.

  2. Obtén 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 CA raíz externa para enviar CSRs y obtener certificados firmados.

  3. Importa el certificado de la AC subordinada firmado en el servicio de CA: El paso final es subir la cadena de certificados PEM firmada con Google Cloud CLI o la Google Cloud consola.

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

Crea una CSR

Console

  1. En la Google Cloud consola, ve a la página Certificate Authority Service.

    Ir a Certificate Authority Service

  2. Haz clic en la pestaña Administrador de CA.

  3. Haz clic en Crear CA.

Selecciona un tipo de CA:

  1. Haz clic en CA subordinada.
  2. En el campo Válido para, ingresa la duración para la que deseas que sean válidos los certificados emitidos por la CA subordinada.
  3. Haz clic en La CA raíz es externa.
  4. Selecciona una de las opciones disponibles para el Nivel de la CA. Para obtener más información, consulta Selecciona los niveles de operación de operación.
  5. En Regionalización, selecciona una Ubicación de la CA de la lista.
  6. Haz clic en Siguiente.
Configura un nombre del asunto de CA
  1. Opcional: En el campo Organización (O), ingresa el nombre de tu empresa.
  2. Opcional: En el campo Unidad organizativa (UO), ingresa la subdivisión de la empresa o la unidad de negocios.
  3. Opcional: En el campo Nombre del país (C), ingresa un código de país de dos letras.
  4. Opcional: En el campo Nombre del estado o la provincia, ingresa el nombre de tu estado.
  5. Opcional: En el campo Nombre de la localidad, ingresa el nombre de tu ciudad.
  6. En el campo Nombre común de CA (CN), ingresa el nombre de la CA.
  7. Haz clic en Continuar.
Configurar el algoritmo y el tamaño de la clave de CA
  1. Elige el algoritmo de clave que mejor se adapte a tus necesidades. Para obtener más detalles sobre las opciones de clave de firma, consulta Configura las claves de firma de la CA.
  2. Para usar una clave de firma administrada por el cliente, selecciona Clave administrada por el cliente y proporciona la versión de la clave criptográfica de Cloud Key Management Service.
  3. Haz clic en Continuar.
Configurar artefactos de CA
  1. Elige si deseas usar un bucket de Cloud Storage administrado por Google o administrado por el cliente.
    1. En el caso de un bucket de Cloud Storage administrado por Google, el servicio de CA crea un bucket administrado por Google en la misma ubicación que la CA.
    2. En el caso de un bucket de Cloud Storage administrado por el cliente, haz clic en Explorar y selecciona uno de los buckets de Cloud Storage existentes.
  2. Haz clic en Continuar.
Agregar etiquetas

Los siguientes pasos son opcionales.

Si deseas agregar etiquetas a la CA, haz lo siguiente:

  1. Haz clic en Agregar elemento.
  2. En el campo Clave 1, ingresa la clave de la etiqueta.
  3. En el campo Valor 1, ingresa el valor de la etiqueta.
  4. Si deseas agregar otra etiqueta, haz clic en Agregar elemento. Luego, agrega la clave y el valor de la etiqueta como se mencionó en los pasos 2 y 3.
  5. Haz clic en Continuar.
Revisa la configuración

Revisa cuidadosamente toda la configuración y, luego, haz clic en Listo para crear la CA.

Descarga la CSR

  1. En la página Autoridad certificadora, selecciona la CA que deseas activar.
  2. Haz clic en Activar.
  3. En el cuadro de diálogo que se abre, haz clic en Descargar CSR.

    Descarga la CSR de la CA.

gcloud

  1. Para crear un grupo de CA para la CA subordinada, ejecuta el siguiente comando. Para obtener más información, consulta Crea un grupo de CA.

    gcloud privateca pools create SUBORDINATE_POOL_ID --location=LOCATION
    

    Reemplaza lo siguiente:

    • SUBORDINATE_POOL_ID: Es el nombre del grupo de CA.
    • LOCATION: Es la ubicación del grupo de CA.
  2. Para crear una CA subordinada en el grupo de CA 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"
    

    Reemplaza lo siguiente:

    • SUBORDINATE_CA_ID: Es el identificador único de la CA subordinada.
    • SUBORDINATE_POOL_ID: Es el nombre del grupo de CA.
    • LOCATION: Es la ubicación del grupo de CA.
    • FILE_NAME: Es el nombre del archivo en el que se escribe la CSR con codificación PEM.

    La marca --key-algorithm especifica el algoritmo criptográfico que deseas usar para crear una clave de Cloud HSM administrada para la CA.

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

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

    Para crear una CA subordinada con una clave de firma administrada por el cliente, ejecuta el siguiente comando:

      gcloud privateca subordinates create SUBORDINATE_CA_ID \
          --pool=SUBORDINATE_POOL_ID \
          --location=LOCATION \
          --create-csr --csr-output-file=FILE_NAME \
          --kms-key-version=KMS_KEY_VERSION \
          --subject="CN=Example Server TLS CA, O=Example LLC"
    

    Reemplaza lo siguiente:

    • SUBORDINATE_CA_ID: Es el identificador único de la CA subordinada.
    • SUBORDINATE_POOL_ID: Es el nombre del grupo de CA.
    • LOCATION: Es la ubicación del grupo de CA.
    • FILE_NAME: Es el nombre del archivo en el que se escribe la CSR con codificación PEM.
    • KMS_KEY_VERSION: Es el ID de recurso completo de una versión de clave criptográfica de Cloud KMS administrada por el cliente para usar como clave de firma.

    Para obtener más detalles sobre las opciones de clave de firma y preparar una clave de firma administrada por el cliente, consulta Configura las claves de firma de la CA.

Se muestra la siguiente instrucción cuando se crea la CSR:

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 exhaustiva de parámetros de configuración disponibles, ejecuta el siguiente comando:

gcloud privateca subordinates create --help

Si pierdes la CSR, puedes 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 CA y una CA subordinada en ese grupo de CA, usa 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 recuperar la CSR, agrega 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.

Firma la CSR

Pasa el archivo CSR generado al miembro de tu organización responsable de la emisión de certificados y solicita que lo firme. Los pasos específicos dependen de la configuración de tu organización.

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

Shell

Configura los parámetros de configuración para 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

Configura las extensiones que se deben agregar 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 CA 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 CA subordinada con un certificado firmado, haz lo siguiente:

Console

  1. Ve a la página Certificate Authority Service en la Google Cloud consola.

    Ir a Certificate Authority Service

  2. Haz clic en la pestaña Administrador de CA.

  3. En Autoridades certificadoras, elige la CA subordinada que creaste.

  4. Haz clic en Activar.

  5. En el cuadro de diálogo que se abre, haz clic en Descargar CSR para descargar el archivo CSR con codificación PEM que la CA emisora puede firmar.

  6. Haz clic en Siguiente.

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

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

  9. Haz clic en Activar.

gcloud

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

Reemplaza lo siguiente:

  • SUBORDINATE_CA_ID: Es el identificador único de la CA subordinada que deseas activar.
  • SUBORDINATE_POOL_ID: Es el nombre del grupo de CA que contiene la CA subordinada.
  • LOCATION: Es la ubicación del grupo de CA. Para obtener la lista completa de ubicaciones, consulta Ubicaciones.

La marca --pem-chain es obligatoria. Esta marca especifica un archivo que contiene la lista de certificados con codificación PEM. La lista de certificados comienza 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 muestra la siguiente instrucción cuando se sube el certificado firmado:

Activated certificate authority [SUBORDINATE_CA_ID].

Terraform

  1. Guarda el certificado de la AC firmado de forma local como subordinate.crt.
  2. Guarda los certificados de CA del firmante de forma local como rootCA.crt.
  3. Quita la configuración para recuperar la CSR que se mencionó en el primer paso, ya que intenta recuperar la CSR que no se permite 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 CA, especifica el valor como [file("intermediateCA.cert"), file("rootCA.crt")].

¿Qué sigue?