Crea una AC subordinada a partir de una AC externa

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

Si tienes una jerarquía de infraestructura de clave pública (PKI) que contiene un AC raíz y subordinadas, puedes mantener la misma AC raíz y crear una AC subordinada en CA Service que se encadena con tu AC raíz. La clave y las operaciones de la AC raíz externa permanecen fuera de Google Cloud. Solo puedes usar la AC raíz externa para emitir el certificado de la AC subordinado a Google Cloud. La AC subordinada confía inmediatamente en cualquier carga de trabajo que confía en la AC raíz externa. Luego, puedes usar la AC subordinada para emitir certificados sin la necesidad de volver a la AC raíz externa en el tiempo de ejecución.

Antes de comenzar

  • Asegúrate de que cuentas con el Administrador de operaciones del Servicio de CA. (roles/privateca.caManager) o el administrador del servicio de CA (roles/privateca.admin) rol de IAM. Para obtener más información, consulta Configura políticas de IAM.
  • Identifica la AC raíz externa.
  • Define el nombre, el sujeto, el período de validez y el tamaño de la clave de la AC subordinada. Para obtener más información, consulta Determina la configuración de AC.

Crea una AC subordinada a partir de una AC externa

La creación de una AC subordinada a partir de una AC externa implica los siguientes pasos:

  1. Generar la solicitud de firma de certificado de la AC (CSR): la primera paso es generar una CSR para la AC subordinada y, luego, descargarla.

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

  3. Importa el certificado de la AC subordinado firmado al servicio de CA: El último paso es subir la cadena de certificados PEM firmada con cualquiera de los dos métodos desde Google Cloud CLI o la consola de Google Cloud.

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

Crea una CSR

Console

  1. Visita la página Seguridad > menú de Certificate Authority Service Consola de Google Cloud

    Ir a Certificate Authority Service

  2. Haz clic en la pestaña AC manager.

  3. Haz clic en Crear AC.

Selecciona un tipo de AC:

  1. Haz clic en CA subordinada.
  2. En el campo Se aplica a, ingresa la duración que desees. que los certificados emitidos por el certificado de la AC sean válidos.
  3. Haz clic en La AC raíz es externa.
  4. Elige una de las opciones disponibles para el Nivel de AC. Para ver más consulta Selecciona los niveles de operación.
  5. En Regionalization, selecciona una ubicación de CA de la lista.
  6. Haz clic en Siguiente.
Configurar el nombre del asunto de CA
  1. En el campo Organización (O), ingresa el nombre de tu empresa.
  2. Opcional: En el campo Unidad organizativa (UO), ingresa la empresa. subdivisión o unidad de negocios.
  3. Opcional: En el campo Nombre del país, ingresa un código de país de dos letras.
  4. Opcional: En el campo Nombre del estado o 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 la AC (CN), ingresa el nombre de la AC.
  7. En el campo ID de grupo, ingresa el nombre del grupo de AC. No puedes cambiar grupo de AC después de crear la AC.
  8. Haz clic en Siguiente.
Cómo configurar el algoritmo y el tamaño de la clave de AC
  1. Elige el algoritmo clave que mejor se adapte a tus necesidades. Información sobre cómo elegir el algoritmo de claves adecuado, consulta Elige un algoritmo clave.
  2. Haz clic en Siguiente.
Configura artefactos de CA

Los siguientes pasos son opcionales. Si omites estos pasos, la configuración predeterminada se aplican parámetros de configuración.

  1. Elige si quieres usar una cuenta administrada por Google bucket de Cloud Storage.
  2. Si no seleccionas un bucket autoadministrado de Cloud Storage, CA Service crea un bucket administrado por Google en el mismo que la AC.

  3. Elige si quieres inhabilitar la publicación de certificados listas de revocación (CRL) y certificados de la AC a Cloud Storage bucket.
  4. La publicación de la CRL y un certificado de la AC en un bucket de Cloud Storage se habilita de forma predeterminada. Para inhabilitar esta configuración, haz clic en los botones de activación.

  5. Haz clic en Siguiente.
Agrega etiquetas

Los siguientes pasos son opcionales.

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

  1. Haz clic en Agregar elemento.
  2. En el campo Clave 1, ingresa la clave de 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 menciona en los pasos 2 y 3.
  5. Haz clic en Siguiente.
Revisa la configuración

Revisa con cuidado toda la configuración y, luego, haz clic en Crear para crear la AC.

Descarga la CSR

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

    Descarga la CSR de la AC.

gcloud

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

    gcloud privateca pools create SUBORDINATE_POOL_ID
    

    Reemplaza SUBORDINATE_POOL_ID por el nombre del grupo de AC.

  2. Para crear una AC subordinada en el grupo de AC creado, ejecuta el siguiente comando de 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 \
      --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 AC subordinada.
    • SUBORDINATE_POOL_ID: Es el nombre del grupo de AC.
    • FILE_NAME: Es el nombre del archivo en el que se escribe la CSR con codificación PEM.

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

    La marca --subject toma el nombre X.501 del sujeto 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 muestra la siguiente declaració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 una lista exhaustiva de los 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

Terraform

  1. Para crear un grupo de AC y una AC subordinada en ese grupo de AC, 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 de CSR generado al miembro de tu organización responsable de la emisión del certificado y solicita que lo firme. El objetivo específico los pasos dependen de la configuración de tu organización.

Puedes experimentar con una AC raíz simple usando el siguientes comandos openssl:

Shell

Establece la configuración para la nueva AC 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 AC 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 la AC subordinado.

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 con un certificado firmado, haz lo siguiente:

Console

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

    Ir a Certificate Authority Service

  2. Haz clic en la pestaña AC manager.

  3. En Autoridades de certificación, elige la AC 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 la Archivo de CSR con codificación PEM que la AC 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 \
  --pem-chain ./chain.crt

Reemplaza lo siguiente:

  • SUBORDINATE_CA_ID: Es el identificador único de la AC subordinada que deseas activar.
  • SUBORDINATE_POOL_ID: Es el nombre del grupo de AC que contiene la AC subordinada.

La marca --pem-chain es obligatoria. Esta marca toma el archivo que contiene la lista de certificados con codificación PEM. La lista de certificados comienza con el certificado de la AC actual y termina con el certificado de AC raíz.

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

Cuando se sube el certificado firmado, se muestra la siguiente declaración:

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 la AC del firmante de forma local como rootCA.crt.
  3. Quita la configuración para recuperar la CSR mencionada en el primer paso como intenta recuperar la CSR, lo que no está permitido después de la activación de la AC.
  4. Actualiza la configuración de la AC subordinada con los siguientes campos y ejecútala terraform apply.

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

    Si la cadena de entidad emisora incluye más de una AC, especifica el valor como [file("intermediateCA.cert"), file("rootCA.crt")].

¿Qué sigue?