Crear una plantilla de certificado

En esta página, se describen los atributos de una plantilla de certificado y se explica cómo puedes crear una. Para obtener más información sobre las plantillas de certificados, consulta Acerca de las plantillas de certificados.

Roles obligatorios

Para obtener los permisos que necesitas para crear una plantilla de certificado, pídele a tu administrador que te otorgue el rol de IAM Administrador de operaciones de servicios de AC (roles/privateca.caManager) en el proyecto, la carpeta o la organización. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Crear una plantilla de certificado

Para crear una plantilla de certificado, usa uno de los siguientes métodos:

Console

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

    Ir a Certificate Authority Service

  2. Haz clic en la pestaña Administrador de plantillas y, luego, en Crear plantilla.

  3. Selecciona una ubicación para la plantilla de certificado con la lista Región. Esta debe ser la misma ubicación que el grupo de AC que deseas usar con la plantilla de certificado.

  4. Ingresa un identificador único para la plantilla de certificado en el campo ID de la plantilla de certificado. De manera opcional, proporciona una descripción para la plantilla de certificado.

  5. Haz clic en Siguiente.

  6. Si deseas configurar valores predeterminados de X.509 para los certificados que usan esta plantilla, haz clic en el botón de activación Incluir valores predefinidos en los certificados emitidos con esta plantilla de certificado. Luego, haz clic en Configurar valores predefinidos.

  7. Configura los valores predefinidos con la siguiente información:

    Cómo definir 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, como para la encriptación de claves, la encriptación 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 base, haz clic en el botón de activación Especifica los usos base de claves para los certificados emitidos desde este grupo de AC y, luego, selecciona una de las opciones que aparecen.
    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 refinadas sobre cómo se puede usar la clave, como para la autenticación del servidor, la autenticación del cliente, la firma de código, la protección de correo electrónico y mucho más. Para obtener más información, consulta Uso extendido de claves.

    Los usos extendidos de claves se definen con identificadores de objetos (OID). Si no configuras los usos extendidos de claves, se permiten todas las situaciones de uso de claves.

    1. Para seleccionar los usos extendidos de claves, haz clic en el botón de activación Write extended key usages for certificates issued from this CA pool y, luego, selecciona una de las opciones que aparecen.
    2. Haz clic en Siguiente.

    Define los identificadores de políticas

    La extensión de políticas de certificados del certificado expresa las políticas que sigue el grupo de AC emisoras. 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 AC. Esta extensión te ayuda a verificar los certificados que emite el grupo de AC 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. Opcional: 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 de un certificado proporciona la siguiente información:

    • Es la 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.

    Agregar servidores OCSP es opcional. Para agregar los servidores 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 AC

    El campo Opciones de AC dentro de una plantilla de certificado define cómo se puede usar el certificado resultante en una jerarquía de autoridad certificadora (AC). En esencia, determina si un certificado se puede usar para firmar otros certificados y, de ser así, las restricciones que se aplican a 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 AC: 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 AC. Si se establece en true, el certificado se puede usar para firmar otros certificados. Si es false, es un certificado de entidad final y no puede firmar otros certificados. Si haces clic en este botón de activación, se te pedirá que definas las restricciones de nombres para la extensión en los certificados de AC.

    3. Incluye la configuración para describir las extensiones X.509 de restricción de la ruta de interacciones: Especifica la configuración que controla la longitud de una cadena de certificados, proveniente de un certificado en particular.Especifica la cantidad máxima de ACs que se pueden encadenar hasta este certificado de AC. Si la longitud máxima de la ruta de interacciones del emisor se establece en 0, la AC solo puede emitir certificados de entidad final. Si se establece en 1, la cadena debajo de este certificado de AC solo puede incluir una AC subordinada. Si no se declara un valor, la cantidad de AC subalternas en la cadena debajo de esta AC no tiene límites.

    4. Haz clic en Siguiente.

    Configura extensiones adicionales

    Opcional: Puedes configurar extensiones personalizadas adicionales para incluirlas en los certificados que emite el grupo de AC. Haz lo siguiente:

    1. Haz clic en Agregar elemento.
    2. En el campo Identificador de objeto, agrega un identificador de objeto válido que tenga el formato de dígitos separados por puntos.
    3. En el campo Value, agrega el valor codificado en base64 del identificador.
    4. Si la extensión es fundamental, selecciona La extensión es fundamental.
  8. Para guardar todos los valores predefinidos, haz clic en Listo.

  9. Luego, ve a la sección Configurar restricciones de extensión. Selecciona una de las siguientes opciones:

    • Cómo copiar todas las extensiones de las solicitudes de certificados en el certificado
    • Cómo descartar todas las extensiones de las solicitudes de certificado
    • Cómo copiar extensiones específicas de solicitudes de certificado en el certificado
  10. Si decides copiar extensiones específicas, puedes hacer lo siguiente:
    • Haz clic en el campo Extensiones de certificados conocidas y borra las extensiones no requeridas de la lista.
    • En el campo Extensiones personalizadas, agrega los identificadores de objetos para las extensiones que deseas que se incluyan en los certificados que emite el grupo de AC.

  11. Haz clic en Siguiente y ve a la sección Configurar restricciones de identidad. Para configurar restricciones en el sujeto y los SAN en los certificados que emite el grupo de AC, selecciona una o ambas de las siguientes opciones:

    • Cómo copiar el asunto de las solicitudes de certificado en el certificado
    • Copia en el certificado el asunto de los nombres alternativos (SAN) de las solicitudes de certificado
    Opcional: En la sección Configurar restricciones de identidad, agrega una expresión de Common Expression Language (CEL) para definir restricciones en los sujetos del certificado. Para obtener más información, consulta Cómo usar CEL.

  12. Haz clic en Siguiente y, luego, en Listo.

gcloud

gcloud privateca templates create TEMPLATE_ID \
  --copy-subject \
  --copy-sans \
  --identity-cel-expression <expr> \
  --predefined-values-file FILE_PATH \
  --copy-all-requested-extensions \
  --copy-extensions-by-oid <1.2.3.4,5.6.7.8> \
  --copy-known-extensions <ext1,ext2>

Reemplaza lo siguiente:

  • TEMPLATE_ID: Es el identificador único de la plantilla de certificado.
  • FILE_PATH: Es el archivo YAML que describe los valores X.509 que establece la plantilla de certificado.

La marca --copy-sans permite que la extensión de nombre alternativo de asunto (SAN) de la solicitud de certificado se copie en el certificado firmado. Como alternativa, puedes especificar --no-copy-sans para quitar de la solicitud de certificado los SAN especificados por el llamador.

La marca --copy-subject permite que el asunto de la solicitud de certificado se copie en el certificado firmado. Como alternativa, puedes especificar --no-copy-subject para quitar de la solicitud de certificado los sujetos especificados por el emisor.

La marca --identity-cel-expression toma una expresión CEL que se evalúa en función del asunto y el nombre alternativo del asunto del certificado antes de que se emita y muestra un valor booleano que indica si se debe permitir la solicitud. Para obtener información sobre el uso de una expresión de Common Expression Language (CEL) para una plantilla de certificado, consulta Cómo usar CEL para plantillas de certificados.

La marca --predefined-values-file especifica la ruta a un archivo YAML que describe los valores X.509 predefinidos que establece esta plantilla. Las extensiones proporcionadas se copian en todas las solicitudes de certificado que usan esta plantilla y tienen prioridad sobre cualquier extensión permitida en la solicitud de certificado. Si actualizas alguna parte de los valores X.509 predefinidos, la actualización reemplazará todo el conjunto de valores X.509 predefinidos.

Si se establece la marca --copy-all-requested-extensions, todas las extensiones especificadas en la solicitud de certificado se copian en el certificado firmado.

Si se establece la marca --copy-extensions-by-oid, se copian OID específicos de la solicitud de certificado en el certificado firmado.

Si se establece la marca --copy-known-extensions, se copian extensiones específicas de la solicitud de certificado en el certificado firmado. Estas extensiones conocidas pueden ser una de las siguientes: base-key-usage, extended-key-usage, ca-options, policy-ids o aia-ocsp-servers.

Quita la marca --copy-all-requested-extensions para ignorar todas las extensiones X.509 en la solicitud de certificado, pero mantén los valores predefinidos definidos en esta plantilla.

Esta es una configuración de plantilla de certificado de ejemplo:

keyUsage:
  baseKeyUsage:
    digitalSignature: true
    keyEncipherment: true
    contentCommitment: false
    dataEncipherment: false
    keyAgreement: false
    certSign: false
    crlSign: false
    encipherOnly: false
    decipherOnly: false
  extendedKeyUsage:
    serverAuth: true
    clientAuth: false
    codeSigning: false
    emailProtection: false
    timeStamping: false
    ocspSigning: false
caOptions:
  isCa: true
  maxIssuerPathLength: 1
policyIds:
- objectIdPath:
  - 1
  - 2
  - 3
additionalExtensions:
- objectId:
    objectIdPath:
    - 1
    - 2
    - 3
  critical: false
  value: "base64 encoded extension value"

Los valores que no se especifican en el YAML se omiten o se establecen de forma predeterminada en false.

Se omiten las siguientes extensiones si no se especifica un valor:

  • keyUsage
  • policyIds
  • additionalExtensions
  • Campo maxIssuerPathLength en la extensión caOptions

Las siguientes extensiones se establecen de forma predeterminada en false si no se especifica un valor:

  • Campo isCa en la extensión caOptions

Crea una plantilla de certificado para situaciones comunes

En esta sección, se proporcionan comandos gcloud para crear una plantilla de certificado para casos de uso comunes.

Certificados TLS del servidor DNS para cualquier dominio

Para crear una plantilla de certificado para emitir certificados TLS del servidor que permitan cualquier dominio, sigue estas instrucciones:

  1. Crea un archivo con el nombre leaf_server_tls_values.yaml y agrégale la siguiente configuración de TLS del servidor de la entidad final:

    leaf_server_tls_values.yaml

    keyUsage:
      baseKeyUsage:
        digitalSignature: true
        keyEncipherment: true
      extendedKeyUsage:
        serverAuth: true
    caOptions:
      isCa: false
    
  2. Para permitir solo certificados con SAN de tipo DNS, ejecuta el siguiente comando gcloud:

    gcloud

    gcloud privateca templates create server-tls \
      --predefined-values-file leaf_server_tls_values.yaml \
      --copy-sans --no-copy-subject \
      --identity-cel-expression "subject_alt_names.all(san, san.type == DNS)"
    

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

Certificados TLS del servidor DNS con solo dominios de prueba

Para crear una plantilla de certificado para emitir certificados TLS del servidor con DNS SAN limitados a dominios de prueba, usa el siguiente comando gcloud:

gcloud

gcloud privateca templates create server-tls \
  --predefined-values-file leaf_server_tls_values.yaml \
  --copy-sans --no-copy-subject \
  --identity-cel-expression "subject_alt_names.all(san, san.type == DNS && san.value.endsWith('.test.example.com'))"

El contenido del archivo leaf_server_tls_values.yaml debe ser el mismo que el del ejemplo anterior.

Para obtener más información sobre el uso de expresiones CEL para garantizar que los nombres de DNS comiencen o terminen con una cadena en particular, consulta Expresiones de ejemplo de CEL.

Certificados de Workload Identity

Para crear una plantilla de certificado para emitir certificados de TLS mutuos (mTLS), sigue estas instrucciones:

  1. Crea un archivo con el nombre leaf_mtls_values.yaml y agrégale la siguiente configuración de TLS mutua de la entidad final.

    leaf_mtls_values.yaml

    keyUsage:
      baseKeyUsage:
        digitalSignature: true
        keyEncipherment: true
      extendedKeyUsage:
        serverAuth: true
        clientAuth: true
    caOptions:
      isCa: false
    
  2. Para permitir solo certificados con SAN de URI SPIFFE, usa el siguiente comando gcloud:

    gcloud

    gcloud privateca templates create workload-spiffe \
      --predefined-values-file leaf_mtls_values.yaml \
      --copy-sans --no-copy-subject \
      --identity-cel-expression "subject_alt_names.all(san, san.type == URI && san.value.startsWith('spiffe://'))"
    

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

Para obtener más información sobre el uso de expresiones CEL para garantizar que los nombres de DNS comiencen o terminen con una cadena en particular, consulta Expresiones de ejemplo de CEL.

Otorga acceso a la plantilla de certificado

Puedes usar una plantilla de certificado si tienes el rol de Usuario de plantillas de certificados del Servicio de AC (roles/privateca.templateUser). Recomendamos que los autores de una plantilla de certificado otorguen el rol de Usuario de plantillas de certificados del Servicio de AC a los miembros de la organización que podrían usar esa plantilla de certificado.

Para otorgar el rol de Usuario de plantillas de certificados del Servicio de AC (roles/privateca.templateUser) a todas las personas del dominio example.com, usa el siguiente comando gcloud:

gcloud

gcloud privateca templates add-iam-policy-binding TEMPLATE_ID \
  --member "domain:example.com" \
  --role "roles/privateca.templateUser"

Reemplaza lo siguiente:

  • TEMPLATE_ID: Es el identificador único de la plantilla de certificado.

Para obtener más información sobre el comando gcloud privateca templates add-iam-policy-binding, consulta gcloud privateca templates add-iam-policy-binding.

Para obtener más información sobre los roles de IAM del servicio de AC y sus permisos asociados, consulta Control de acceso con IAM.

¿Qué sigue?