Agrega una política de emisión de certificados a un grupo de CA

En esta página, se describe cómo agregar una política de emisión de certificados a un grupo de autoridades certificadas (CA).

Una política de emisión de certificados te permite especificar el asunto y los nombres alternativos del asunto (SAN) que se pueden incluir en los certificados emitidos. Puedes especificar la política de emisión de certificados mientras creas un grupo de AC o puedes actualizar un grupo de AC existente para agregar una política de emisión.

Para obtener más información, consulta Descripción general de las plantillas y de las políticas de emisión.

Antes de comenzar

  • Asegúrate de tener la función de IAM Administrador de operaciones del servicio de CA (roles/privateca.caManager) o Administrador del servicio de CA (roles/privateca.admin). Para obtener información sobre cómo otorgar una IAM a una principal, consulta Cómo otorgar una sola función.

  • Crea un grupo de CA.

Agrega un archivo de política de emisión de certificados

Para agregar una política de emisión de certificados a un grupo de CA existente, haz lo siguiente:

Console

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

    Ir a Certificate Authority Service

  2. En la página Administrador de grupos de CA, haz clic en el nombre del grupo de CA al que deseas agregar una política de emisión de certificados.

  3. En la página Grupo de CA, haz clic en Editar.

Configura restricciones de identidad

Para configurar restricciones en el sujeto y los SAN en los certificados que emite el grupo de CA, haz lo siguiente:

  1. Opcional: Para impedir que se transfiera la entidad de las solicitudes de certificado, haz clic en el botón de activación.
  2. Opcional: Para impedir que se pasen los nombres alternativos de entidad de las solicitudes de certificado, haz clic en el botón de activación.
  3. Opcional: Agrega una expresión de Common Expression Language (CEL) para aplicar restricciones sobre el asunto del certificado. Para obtener más información, consulta Usa CEL.
  4. Haz clic en Siguiente.
Configura restricciones de extensiones

Para impedir que todas las extensiones de las solicitudes de certificado se incluyan en los certificados emitidos, haz clic en el botón de activación.

Después de hacer clic en el botón de activación, verás el campo Extensiones de certificado conocidas, que puedes usar para seleccionar las extensiones de certificado. Para seleccionar las extensiones de certificado, haz lo siguiente:

  1. Opcional: Haz clic en el campo Extensiones de certificado conocidas y borra las extensiones que no se requieren del menú.
  2. Opcional: En el campo Extensiones personalizadas, agrega los identificadores de objetos para las extensiones que desees que se incluyan en los certificados que emite el grupo de CA.
Configura valores de referencia

Para configurar los valores de modelo de referencia en los certificados emitidos desde el grupo de CA, haz lo siguiente:

  1. Haz clic en el botón de activación.
  2. Haz clic en Configurar valores de referencia.
Definir el uso básico de la clave

Puedes usar esta configuración para definir las formas en las que se puede usar la clave contenida en el certificado. Entre las opciones para el uso de la clave, se incluyen el cifrado de clave, el cifrado de datos, la firma de certificados y la firma de CRL, entre otras.

Para obtener más información, consulta Uso de claves.

Para definir los usos básicos de claves, haz lo siguiente:

  1. Opcional: En la ventana que aparece, haz clic en el botón de activación si quieres especificar los usos básicos de clave para los certificados.
  2. Selecciona las casillas de verificación de las formas en que quieres que se use una clave.
  3. Selecciona las formas generales en las que quieres que se use la clave.
  4. Haz clic en Siguiente.
Definir el uso extendido de la clave

Puedes usar esta configuración para seleccionar situaciones más detalladas en las que se puede usar la clave contenida en el certificado. Las opciones incluyen autenticación del servidor, autenticación de cliente, firma de código y protección de correo electrónico, entre otras.

Los usos extendidos de claves se definen mediante identificadores de objetos (OID). Si no configuras los usos extendidos de claves, se permiten todos los casos de uso de claves.

Para obtener más información, consulta Uso extendido de la clave.

Para definir los usos extendidos de claves, haz lo siguiente:

  1. Opcional: Si quieres especificar los usos extendidos de claves para los certificados que emite el grupo de CA, haz clic en el botón de activación.
  2. Selecciona las casillas de verificación de los casos de uso extendido de la clave.
  3. Haz clic en Siguiente.
Definir identificadores de políticas

La extensión de las políticas de certificados en el certificado expresa las políticas que sigue el grupo de AC emisor. Esta extensión puede incluir información sobre cómo se validan las identidades antes de la emisión del certificado, cómo se revocan los certificados y cómo se garantiza la integridad del grupo de CA. Esta extensión te ayuda a verificar los certificados que emite el grupo de CA y ver cómo se usan.

Para obtener más información, consulta Políticas de certificados.

Para especificar la política que define el uso del certificado, haz lo siguiente:

  1. Opcional: Agrega el identificador de política en el campo Identificadores de política.
  2. Haz clic en Siguiente.
Agrega servidores OCSP de acceso a la información de la autoridad (AIA)

La extensión AIA en un certificado proporciona la siguiente información:

  • Dirección de los servidores OCSP desde los que puedes verificar el estado de revocación del certificado.
  • Es el método de acceso para el emisor del certificado.

Para obtener más información, consulta Acceso a la información de la autoridad.

Para agregar los servidores OCSP que aparecen en el campo de extensión de AIA en los certificados, haz lo siguiente: El siguiente procedimiento es opcional.

  1. Opcional: Haz clic en Agregar elemento.
  2. En el campo URL del servidor, agrega la URL del servidor OCSP.
  3. Haz clic en Listo.
  4. Haz clic en Siguiente.
Configura extensiones adicionales

Si deseas configurar extensiones personalizadas adicionales para incluirlas en los certificados que emite el grupo de CA, haz lo siguiente. El siguiente procedimiento es opcional.

  1. Haz clic en Agregar elemento.
  2. En el campo Identificador de objeto, agrega un identificador de objeto válido con formato de dígitos separados por puntos.
  3. En el campo Valor, agrega el valor codificado en base64 para el identificador.
  4. Si la extensión es crítica, selecciona La extensión es crítica.

Para guardar todas las configuraciones de valores del modelo de referencia, haz clic en Listo.

gcloud

Si deseas usar Google Cloud CLI para agregar una política de emisión de certificados a un grupo de AC, debes crear un archivo YAML en el que se describan las restricciones de los certificados que el grupo de AC puede emitir. El contenido corresponde a una IssuancePolicy.

  1. Mediante el editor de Cloud Shell, crea un archivo policy.yaml con el siguiente contenido:

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: true
    

    Aquí:

    • El campo allowSubjectPassthrough es obligatorio. Si el campo allowSubjectPassthrough se establece como true, el campo del asunto se copia de una solicitud de certificado en el certificado firmado. De lo contrario, se descarta el asunto solicitado.
    • Si el campo allowSubjectAltNamesPassthrough se establece como true, la extensión SubjectAltNames se copia en el certificado firmado de una solicitud de certificado. De lo contrario, se descartan los SubjectAltNames solicitados.
  2. Para actualizar la política de emisión de certificados de un grupo de CA con el archivo creado en el paso anterior, ejecuta el siguiente comando:

    gcloud privateca pools update POOL_NAME \
      --issuance-policy FILE_PATH
    

    Reemplaza lo siguiente:

    • POOL_NAME: Nombre del grupo de CA.
    • FILE_PATH: Es la ruta de acceso del archivo policy.yaml.

    Para obtener más información sobre el comando gcloud privateca pools update, consulta la actualización de gcloud privateca groups.

Para obtener más información, consulta Crea un grupo de AC.

Restricciones admitidas

El Servicio de CA admite las siguientes restricciones de políticas de emisión. Puedes combinar las siguientes restricciones según sea necesario para crear una política de emisión de certificados personalizada.

Restringir o forzar los valores permitidos de X.509

Un grupo de CA puede restringir los valores X.509 permitidos en las solicitudes de certificados mediante la configuración del campo passthrough_extensions.

Un grupo de AC también puede especificar de forma explícita valores X.509 para que se agreguen a todos sus certificados emitidos y reemplazar cualquier valor solicitado mediante el campo baseline_values.

Los valores baseline_values de un grupo de AC permiten especificar las siguientes propiedades:

También puedes usar estas opciones en conjunto.

Si actualizas cualquier parte del campo baseline_values, la actualización reemplazará todo el conjunto de valores en el campo baseline_values.

  • Ejemplo: Restringe una CA de modo que emita solo certificados de entidad final con valores X.509 para TLS mutuo (mTLS).

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
          keyEncipherment: true
        extendedKeyUsage:
           clientAuth: true
           serverAuth: true
    
  • Ejemplo: Restringe una AC para que emita solo certificados de firma de código de entidad final con una URL de OCSP de AIA de referencia.

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
        extendedKeyUsage:
          codeSigning: true
      aiaOcspServers:
        - "http://foo.bar/revocation"
      additionalExtensions:
      - objectId:
          objectIdPath:
            - 1
            - 2
            - 3
        critical: false
        value: "base64 encoded extension value"
    

Para obtener más información sobre el perfil de certificado de mTLS de entidad final, consulta mTLS de entidad final.

Restringir los campos de identidad permitidos

Para restringir la identidad de los certificados emitidos a través de un grupo de AC, puedes agregar una expresión de Common Expression Language (CEL) al campo identity_constraints de la política de emisión. Las expresiones de CEL permiten restricciones arbitrarias sobre el nombre de dominio del sujeto (incluido el nombre común) y los SAN de un certificado.

Si quieres obtener más información sobre el uso de una expresión CEL para restringir el sujeto y los SAN, consulta Usa CEL.

  • Ejemplo: Permite que la AC emita solo certificados que coincidan con un asunto específico.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: false
      celExpression:
        expression: 'subject.organization == "Example LLC" && subject.country_code in ["US", "UK"]'
    

    El campo celExpression es opcional. Usa una expresión de Common Expression Language (CEL) para validar el sujeto resuelto de X.509 y el SAN antes de que se firme un certificado. Para obtener más información sobre el uso de expresiones CEL, consulta Usa CEL.

  • Ejemplo: Permite solo los SAN que tienen nombres de DNS como us.google.org o que terminan en .google.com.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == DNS && (san.value == "us.google.org" || san.value.endsWith(".google.com")) )'
    
  • Ejemplo: Permite solo los SAN que tengan URI https://google.com/webhp o que comiencen con spiffe://example-trust-domain-1/ns/namespace1/sa/.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == URI && (san.value == "https://google.com/webhp" || san.value.startsWith("spiffe://example-trust-domain-1/ns/namespace1/sa/")) )'
    
  • Ejemplo: Permite solo los SAN que tengan direcciones de correo electrónico example@google.com o que terminen en @google.org.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == EMAIL && (san.value == "example@google.com" || san.value.endsWith("@google.org")) )'
    
  • Ejemplo: Permite solo los SAN personalizados que tengan un OID específico y un valor personalizado.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == CUSTOM && san.oid == [1, 2, 3, 4] && san.value == "custom-data" )'
    

Restringir la vida útil máxima de los certificados emitidos

Para restringir la vida útil de los certificados emitidos, usa el campo maximum_lifetime. Si el ciclo de vida solicitado de un certificado es mayor que el ciclo de vida máximo, el ciclo de vida del certificado se trunca de manera explícita.

Ejemplo

Para permitir una vida útil máxima de 30 días, usa el siguiente archivo policy.yaml:

policy.yaml

maximumLifetime: 2592000s

Restringe los modos de emisión de certificados permitidos

Puede solicitar un certificado mediante una solicitud de firma de certificado (CSR) o una descripción en línea de los valores solicitados. Es posible que algunas organizaciones prefieran agregar limitaciones a la opción que se puede usar porque el último método no requiere una prueba de posesión de la clave privada asociada. Puedes establecer estas limitaciones con el campo allowedIssuanceModes.

Para obtener más información sobre cómo especificar las formas en que se pueden solicitar certificados de un grupo de CA, consulta IssuanceModes.

Para obtener más información sobre la solicitud de certificados, consulta Cómo solicitar un certificado y ver los certificados emitidos.

  • Ejemplo: Permite solo la emisión de CSR.

policy.yaml

allowedIssuanceModes:
  allowCsrBasedIssuance: True
  allowConfigBasedIssuance: False

Restringe los algoritmos de clave pública de la solicitud de certificado

Para restringir la longitud mínima de la clave y los algoritmos de clave pública que pueden utilizar los certificados, puedes usar el campo allowedKeyTypes en el archivo YAML de la política de emisión de certificados. Si se especifica este campo, entonces la clave pública de la solicitud de certificado debe coincidir con uno de los tipos de clave enumerados en el archivo YAML. Si no se especifica este campo, podrás usar cualquier clave, a excepción de las claves RSA, cuyo tamaño de módulo sea inferior a 2,048 bits. Si quieres usar una clave RSA con un tamaño de módulo inferior a 2,048 bits, debes permitirla explícitamente con la política de emisión de certificados.

Ejemplo: Permite las claves RSA con un tamaño de módulo de entre 3,072 bits y 4,096 bits (inclusive), o claves del algoritmo de firma digital de curva elíptica (ECDSA) en la curva P-256 de NIST.

policy.yaml

allowedKeyTypes:
- rsa:
    minModulusSize: 3072
    maxModulusSize: 4096
- ellipticCurve:
    signatureAlgorithm: ECDSA_P256

Puedes elegir uno de los siguientes algoritmos de firma de curva elíptica:

  • EC_SIGNATURE_ALGORITHM_UNSPECIFIED: Se puede usar cualquier algoritmo de firma.
  • ECDSA_P256: Firma digital con curva elíptica sobre la curva P-256 de NIST.
  • ECDSA_P384: Firma digital con curva elíptica sobre la curva P-384 de NIST.
  • EDDSA_25519: Algoritmo de firma digital de la curva Edwards sobre la curva 25519, como se describe en RFC 8410.

¿Qué sigue?