Agrega políticas de emisión de certificados

Agregar políticas de emisión de certificados en CA Service implica definir reglas y restricciones que rigen los tipos de certificados que emite una autoridad certificadora (AC). Para obtener más información sobre las políticas de emisión de certificados, consulta Acerca de las políticas de emisión de certificados.

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 cuando 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 las políticas de emisión.

Antes de comenzar

  • Asegúrate de tener el rol de IAM de administrador de operaciones del servicio de AC (roles/privateca.caManager) o administrador del servicio de AC (roles/privateca.admin). Para obtener información sobre cómo otorgar un rol de IAM a un principal, consulta Otorga un solo rol.

  • Crea un grupo de CA.

Puedes agregar una política de emisión de certificados a un grupo de CA cuando creas un grupo de CA o cuando actualizas uno existente.

Usa uno de los siguientes métodos:

Console

  1. Ve a la página Certificate Authority Service en la consola deGoogle 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 para el que deseas agregar una política de emisión de certificados.

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

Define el uso base de la clave

Este parámetro de configuración hace referencia al campo Key Usage dentro de un certificado digital. Especifica cómo se puede usar la clave privada del certificado, por ejemplo, para el cifrado de claves, el cifrado de datos, la firma de certificados y la firma de CRL. Para obtener más información, consulta Uso de claves.

  1. Para seleccionar los usos de clave básicos, haz clic en el botón de activación Especificar los usos base de claves para los certificados emitidos desde este grupo de CA y, luego, selecciona una de las opciones que se muestran.
  2. Haz clic en Siguiente.
Define el uso extendido de la clave

Este parámetro de configuración hace referencia al campo Extended Key Usage (EKU) en un certificado digital. Proporciona restricciones más específicas y detalladas sobre cómo se puede usar la clave, por ejemplo, para la autenticación del servidor, la autenticación del cliente, la firma de código y la protección del correo electrónico. Para obtener más información, consulta Uso extendido de claves.

Los usos extendidos de claves se definen con identificadores de objeto (OID). Si no configuras los usos extendidos de la clave, se permitirán todas las situaciones de uso de la clave.

  1. Para seleccionar los usos de clave extendidos, haz clic en el botón de activación Escribe los usos de clave extendidos para los certificados emitidos desde este grupo de CA y, luego, selecciona una de las opciones que se muestran.
  2. Haz clic en Siguiente.
Cómo definir identificadores de políticas

La extensión de políticas de certificado en el certificado expresa las políticas que sigue el grupo de CA emisor. Esta extensión puede incluir información sobre cómo se validan las identidades antes de la emisión de certificados, 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 entidades certificadoras y a 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. Agrega el identificador de la política en el campo Identificadores de políticas.
  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 la entidad emisora del certificado.

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

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

  1. 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.
Opciones de CA

El campo Opciones de CA dentro de una plantilla de certificado define cómo se puede usar el certificado resultante en una jerarquía de autoridad certificadora (CA). Las opciones de CA determinan si un certificado se puede usar para firmar otros certificados y, si es así, las restricciones sobre los certificados que emite.

Selecciona alguna de las siguientes opciones:

  1. Incluye los archivos de configuración para describir las extensiones de CA X.509: Especifica la configuración dentro de una plantilla de certificado que controla las extensiones X.509.

  2. Restringe los certificados emitidos a fin de que se usen solo para las CA: Esta opción solo aparece si seleccionas la casilla de verificación mencionada en el paso anterior. Este valor booleano indica si el certificado es un certificado de CA. Si se configura como true, el certificado se puede usar para firmar otros certificados. Si es false, el certificado es de entidad final y no puede firmar otros certificados. Si haces clic en este botón de activación, se te pedirá que definas restricciones de nombres para la extensión en los certificados de CA.

  3. Incluye la configuración para describir las extensiones X.509 de restricción de la longitud de la ruta: Especifica la configuración que controla la longitud de una cadena de certificados, que se deriva de un certificado en particular. Si la longitud máxima de la ruta de interacciones del emisor se establece en 0, la CA solo puede emitir certificados de entidad final. Si se establece en 1, la cadena debajo de este certificado de CA solo puede incluir una CA subordinada. Si no se declara un valor, la cantidad de CA subordinadas en la cadena debajo de esta CA no está limitada.

  4. Haz clic en Siguiente.
Configura extensiones adicionales

Para configurar extensiones personalizadas adicionales que se incluirán en los certificados emitidos por el grupo de CA, haz lo siguiente:

  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 Value, agrega el valor codificado en base64 para el identificador.
  4. Si la extensión es fundamental, selecciona La extensión es fundamental.

Para guardar todos los parámetros de configuración del valor del modelo de referencia, haz clic en Listo.

gcloud

Para usar Google Cloud CLI y agregar una política de emisión de certificados a un grupo de AC, debes crear un archivo YAML que describa las restricciones de los certificados que puede emitir el grupo de AC. El contenido corresponde a una IssuancePolicy.

  1. Con 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 está establecido en true, el campo del asunto se copia de una solicitud de certificado al certificado firmado. De lo contrario, se descarta el asunto solicitado.
    • Si el campo allowSubjectAltNamesPassthrough se establece en true, la extensión SubjectAltNames se copia de una solicitud de certificado en el certificado firmado. 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 --location LOCATION --issuance-policy FILE_PATH
    

    Reemplaza lo siguiente:

    • POOL_NAME: Es el nombre del grupo de AC.
    • LOCATION: Es la ubicación del grupo de AC. Para obtener la lista completa de ubicaciones, consulta Ubicaciones.
    • FILE_PATH: Es la ruta de acceso al archivo policy.yaml.

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

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.

Restringe o fuerza los valores X.509 permitidos

Un grupo de CA puede restringir los valores de X.509 permitidos en las solicitudes de certificados configurando el campo passthrough_extensions.

Un grupo de CA también puede especificar de forma explícita los valores de X.509 que se agregarán a todos sus certificados emitidos, reemplazando cualquier valor solicitado, con el campo baseline_values.

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

También puedes usar estas opciones juntas.

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

  • Ejemplo: Restringe una CA para que solo emita certificados de entidad final con valores X.509 para TLS mutua (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 para mTLS de entidad final, consulta mTLS de entidad final.

Restringe los campos de identidad permitidos

Para restringir la identidad de los certificados emitidos a través de un grupo de CA, puedes agregar una expresión de [Common Expression Language (CEL)][4]{: .external} 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.

Para obtener más información sobre cómo usar una expresión CEL para restringir el sujeto y los SAN, consulta Uso de CEL.

  • Ejemplo: Permite que la CA emita solo certificados que coincidan con un sujeto especificado.

    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 asunto y el SAN resueltos de X.509 antes de que se firme un certificado. Para obtener más información sobre el uso de expresiones CEL, consulta Uso de CEL.

  • Ejemplo: Permite solo los SAN que tengan nombres de DNS como us.google.org o que terminen 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 URIs 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 con @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 tienen 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" )'
    

Restringe la duración de la fecha anterior de los certificados emitidos

Para establecer un valor de not_before_time anterior para los certificados emitidos, usa el campo backdate_duration. Cuando se configuran, los certificados de este grupo de CA tienen un not_before_time igual a la hora de emisión menos la duración especificada. El parámetro not_after_time se ajusta para mantener la vida útil del certificado solicitada. La backdate_duration debe ser menor o igual que 48 horas.

Ejemplo

Para adelantar la fecha de los certificados en 1 hora, usa el siguiente archivo policy.yaml:

policy.yaml

backdateDuration: 3600s

Restringe la duración máxima de los certificados emitidos

Para restringir la vida útil de los certificados emitidos, usa el campo maximum_lifetime. Si la vida útil solicitada de un certificado es mayor que la vida útil máxima, se trunca explícitamente la vida útil del certificado.

Ejemplo

Para permitir un ciclo de vida máximo de 30 días, usa el siguiente archivo policy.yaml:

policy.yaml

maximumLifetime: 2592000s

Restringe los modos de emisión de certificados permitidos

Puedes solicitar un certificado a través de una Solicitud de firma de certificado (CSR) o una descripción intercalada de los valores solicitados. Algunas organizaciones tal vez prefieran agregar limitaciones a la opción que se puede usar, ya que 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 cómo solicitar certificados, consulta Crea una solicitud de certificado.

  • 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 usar 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, la clave pública de la solicitud de certificado debe coincidir con uno de los tipos de clave que se indican en el archivo YAML. Si no se especifica este campo, puedes usar cualquier clave, excepto las claves RSA cuyo tamaño del módulo sea inferior a 2048 bits. Si deseas usar una clave RSA con un tamaño de módulo inferior a 2048 bits, debes permitirlo de forma explícita con la política de emisión de certificados.

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

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 de curva elíptica sobre la curva P-256 de NIST.
  • ECDSA_P384: Firma digital de curva elíptica sobre la curva P-384 del NIST.
  • EDDSA_25519: Algoritmo de firma digital de curva de Edwards sobre la curva 25519, como se describe en el RFC 8410.

¿Qué sigue?