Crear una plantilla de certificado

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

Roles obligatorios

Para obtener los permisos que necesitas para crear una plantilla de certificado, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Gestor de operaciones del servicio de AC (roles/privateca.caManager) en el proyecto, la carpeta o la organización. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Crear una plantilla de certificado

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

Consola

  1. Ve a la página Servicio de autoridad de certificación de la Google Cloud consola.

    Ir al Servicio de Autoridades de Certificación

  2. Haga clic en la pestaña Gestor de plantillas y, a continuación, en Crear plantilla.

  3. Seleccione una ubicación para la plantilla de certificado en la lista Región. Debe ser la misma ubicación que el grupo de autoridades de certificación que quieras usar con la plantilla de certificado.

  4. Introduzca un identificador único para la plantilla de certificado en el campo ID de plantilla de certificado. También puede añadir una descripción de la plantilla de certificado.

  5. Haz clic en Siguiente.

  6. Si quieres configurar valores x.509 predeterminados para los certificados que usen esta plantilla, haz clic en el botón Incluir valores predefinidos en los certificados emitidos con esta plantilla de certificado. A continuación, haga clic en Configurar valores predefinidos.

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

    Definir el uso de la clave base

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

    1. Para seleccionar los usos de clave base, haz clic en el interruptor Especificar usos de clave base para los certificados emitidos desde este grupo de ACs y, a continuación, elige una de las opciones de la lista.
    2. Haz clic en Siguiente.

    Definir el uso mejorado de claves

    Este ajuste hace referencia al campo Extended Key Usage (EKU) de un certificado digital. Ofrece restricciones más específicas y detalladas sobre cómo se puede usar la clave, como para la autenticación de servidores, la autenticación de clientes, la firma de código, la protección de correo electrónico y más. Para obtener más información, consulta Uso de claves extendido.

    Los usos mejorados de clave se definen mediante identificadores de objeto (OIDs). Si no configuras los usos mejorados de clave, se permitirán todos los casos de uso de clave.

    1. Para seleccionar los usos de claves ampliados, haz clic en el botón Escribir usos de claves ampliados para certificados emitidos desde este grupo de CAs y, a continuación, selecciona una de las opciones de la lista.
    2. Haz clic en Siguiente.

    Definir identificadores de políticas

    La extensión de políticas de certificados del certificado expresa las políticas que sigue el grupo de CAs emisoras. Esta extensión puede incluir información sobre cómo se validan las identidades antes de emitir los certificados, cómo se revocan los certificados y cómo se asegura la integridad del conjunto de autoridades de certificación. Esta extensión te ayuda a verificar los certificados que emite el grupo de autoridades de certificación y a ver cómo se usan.

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

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

    1. Opcional: Añade el identificador de la política en el campo Identificadores de la política.
    2. Haz clic en Siguiente.

    Añadir servidores OCSP de acceso a información de la autoridad (AIA)

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

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

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

    Añadir servidores OCSP es opcional. Para añadir los servidores OCSP que aparecen en el campo de extensión AIA de los certificados, sigue estos pasos:

    1. Haz clic en Añadir elemento.
    2. En el campo URL del servidor, añade la URL del servidor OCSP.
    3. Haz clic en Listo.
    4. Haz clic en Siguiente.

    Opciones de CA

    El campo Opciones de la AC de una plantilla de certificado define cómo se puede usar el certificado resultante en una jerarquía de autoridad de certificación (CA). Determina si un certificado se puede usar para firmar otros certificados y, si es así, las restricciones que se aplican a los certificados que emite.

    Elige una de las opciones siguientes:

    1. Incluye las configuraciones para describir las extensiones X.509 de la AC: especifica los ajustes de una plantilla de certificado que controlan las extensiones X.509.

    2. Restringir el uso de los certificados emitidos solo a las autoridades de certificación: esta opción solo aparece si seleccionas la casilla mencionada en el paso anterior. Este valor booleano indica si el certificado es un certificado de AC. Si se define como true, el certificado se puede usar para firmar otros certificados. Si false, es un certificado de entidad final y no puede firmar otros certificados. Si haces clic en este interruptor, se te pedirá que definas restricciones de nombres para la extensión en los certificados de CA.

    3. Incluye las configuraciones para describir las extensiones X.509 de restricción de longitud de la ruta: especifica los ajustes que controlan la longitud que puede tener una cadena de certificados a partir de un certificado concreto.Especifica el número máximo de CAs que se pueden encadenar hasta este certificado de CA. Si la longitud máxima de la ruta del emisor es 0, la CA solo puede emitir certificados de entidad final. Si se define como 1, la cadena situada debajo de este certificado de CA solo puede incluir una CA subordinada. Si no se declara ningún valor, el número de CAs subordinadas de la cadena por debajo de esta CA no tiene límite.

    4. Haz clic en Siguiente.

    Configurar extensiones adicionales

    Opcional: Puede configurar extensiones personalizadas adicionales para incluirlas en los certificados emitidos por el grupo de CAs. Sigue estos pasos:

    1. Haz clic en Añadir elemento.
    2. En el campo Identificador de objeto, añada un identificador de objeto válido que tenga el formato de dígitos separados por puntos.
    3. En el campo Value (Valor), añada 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 Hecho.

  9. A continuación, vaya a la sección Configurar restricciones de extensión. Selecciona una de las siguientes opciones:

    • Copiar todas las extensiones de las solicitudes de certificado al certificado
    • Eliminar todas las extensiones de las solicitudes de certificado
    • Copiar extensiones específicas de solicitudes de certificados al certificado
  10. Si decide copiar extensiones concretas, puede hacer lo siguiente:
    • Haz clic en el campo Extensiones de certificado conocidas y desmarca las extensiones que no necesites de la lista.
    • En el campo Extensiones personalizadas, añade los identificadores de objeto de las extensiones que quieras incluir en los certificados que emita el grupo de ACs.

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

    • Copiar el asunto de las solicitudes de certificado en el certificado
    • Copiar los nombres alternativos del sujeto (SAN) de las solicitudes de certificado al certificado
    Opcional: En la sección Configurar restricciones de identidad, añade una expresión del lenguaje de expresión común (CEL) para definir restricciones en los asuntos de los certificados. Para obtener más información, consulta Usar CEL.

  12. Haz clic en Siguiente y, a continuación, en Hecho.

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>

Haz los cambios siguientes:

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

La marca --copy-sans permite que la extensión de nombre alternativo del sujeto (SAN) de la solicitud de certificado se copie en el certificado firmado. También puedes especificar --no-copy-sans para eliminar cualquier SAN especificado por la persona que llama de la solicitud de certificado.

La marca --copy-subject permite que el asunto de la solicitud de certificado se copie en el certificado firmado. También puedes especificar --no-copy-subject para eliminar cualquier asunto especificado por la persona que llama de la solicitud de certificado.

La marca --identity-cel-expression toma una expresión CEL que se evalúa en el campo Subject y en el nombre alternativo de la entidad del certificado antes de que se emita, y devuelve un valor booleano que indica si se debe permitir la solicitud. Para obtener información sobre cómo usar una expresión del lenguaje de expresión común (CEL) en una plantilla de certificado, consulta el artículo Usar CEL en plantillas de certificado.

La marca --predefined-values-file especifica la ruta a un archivo YAML que describe los valores X.509 predefinidos establecidos por esta plantilla. Las extensiones proporcionadas se copian en las solicitudes de certificado que usen esta plantilla, y tienen prioridad sobre las extensiones permitidas en la solicitud de certificado. Si actualiza alguna parte de los valores X.509 predefinidos, la actualización sustituirá a todo el conjunto de valores X.509 predefinidos.

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

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

Si se define la marca --copy-known-extensions, se copian extensiones específicas de la solicitud de certificado al 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 de la solicitud de certificado, pero mantén los valores predefinidos de esta plantilla.

A continuación, se muestra un ejemplo de configuración de plantilla de certificado:

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 archivo YAML se omiten o se les asigna el valor predeterminado false.

Si no se especifica ningún valor, se omiten las siguientes extensiones:

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

Las siguientes extensiones tienen el valor predeterminado false si no se especifica ningún valor:

  • Campo isCa de la extensión caOptions

Crear una plantilla de certificado para situaciones habituales

En esta sección se proporcionan comandos de gcloud para crear una plantilla de certificado para casos prácticos habituales.

Certificados TLS de servidor DNS para cualquier dominio

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

  1. Crea un archivo con el nombre leaf_server_tls_values.yaml y añade la siguiente configuración de TLS del servidor de entidad final:

    leaf_server_tls_values.yaml

    keyUsage:
      baseKeyUsage:
        digitalSignature: true
        keyEncipherment: true
      extendedKeyUsage:
        serverAuth: true
    caOptions:
      isCa: false
    
  2. Para permitir solo los certificados con SANs 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 de servidor DNS con solo dominios de prueba

Para crear una plantilla de certificado para emitir certificados TLS de servidor con SANs de DNS 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 cómo usar expresiones CEL para asegurarse de que los nombres DNS empiezan o terminan con una cadena concreta, consulte las expresiones de ejemplo de CEL.

Certificados de identidad de carga de trabajo

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

  1. Crea un archivo con el nombre leaf_mtls_values.yaml y añade la siguiente configuración de TLS mutuo de entidad final.

    leaf_mtls_values.yaml

    keyUsage:
      baseKeyUsage:
        digitalSignature: true
        keyEncipherment: true
      extendedKeyUsage:
        serverAuth: true
        clientAuth: true
    caOptions:
      isCa: false
    
  2. Para permitir solo los certificados con SANs 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 cómo usar expresiones CEL para asegurarse de que los nombres DNS empiezan o terminan con una cadena concreta, consulte las expresiones de ejemplo de CEL.

Dar acceso a la plantilla de certificado

Puedes usar una plantilla de certificado si tienes el rol Usuario de plantilla de certificado del servicio de CA (roles/privateca.templateUser). Recomendamos que los autores de una plantilla de certificado concedan el rol Usuario de plantilla de certificado de servicio de CA a los miembros de la organización que puedan usar esa plantilla de certificado.

Para asignar el rol Usuario de plantilla de certificado de servicio de AC (roles/privateca.templateUser) a todos los usuarios 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"

Haz los cambios siguientes:

  • TEMPLATE_ID: 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 gestión de identidades y accesos del servicio de CAs y sus permisos asociados, consulta Control de acceso con gestión de identidades y accesos.

Siguientes pasos