Solicitar un certificado mediante una plantilla de certificado

En esta página se describe cómo solicitar un certificado mediante una plantilla de certificado.

Las plantillas de certificados te permiten implementar controles de políticas precisos sobre la emisión de certificados. Por ejemplo, puedes usar plantillas de certificados para estandarizar la emisión de certificados TLS de servidor en los grupos de AC de tu organización. También puedes usar plantillas de certificados para aplicar políticas a un nivel más granular, como a usuarios específicos. Esto resulta útil en situaciones en las que necesitas restringir los tipos de certificados que pueden emitir diferentes personas. También puedes reutilizar plantillas para casos habituales de emisión.

Antes de empezar

  1. Prepara tu entorno para el servicio de AC.

  2. Para obtener los permisos que necesitas para emitir certificados mediante una plantilla de certificado, pide a tu administrador que te conceda el rol de gestión de identidades y accesos de usuario de plantilla de certificado de servicio de AC (roles/privateca.templateUser) en la plantilla de certificado.

    Para obtener más información sobre los roles de gestión de identidades y accesos predefinidos para el servicio de CA, consulta el artículo sobre control de acceso con gestión de identidades y accesos.

    Para obtener información sobre cómo asignar un rol de IAM a un principal, consulta el artículo Asignar un rol concreto.

Emisión de certificados de prueba

Antes de usar una plantilla de certificado para solicitar un certificado firmado, le recomendamos que verifique si la plantilla de certificado puede generar un certificado correctamente. La emisión de certificados falla cuando hay un conflicto entre las políticas de emisión del grupo de CAs y las políticas de la plantilla de certificado. Al probar la emisión, puede identificar y resolver estos conflictos de forma proactiva. Ten en cuenta que los certificados de prueba no están codificados en PEM, no están firmados y no conllevan ningún coste de generación.

Para probar la emisión de certificados con una plantilla de certificado, sigue estos pasos:

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. Haz clic en la pestaña Gestor de plantillas.

  3. Haga clic en la plantilla de certificado que quiera probar. Aparecerá la página Detalles de la plantilla.

  4. Para crear una solicitud de prueba, haz clic en Crear certificado y, a continuación, en Probar emisión de certificado. Aparecerá el formulario de solicitud de certificado.

  5. Especifica los siguientes detalles necesarios para crear una solicitud de certificado:

    • Región: ubicación del certificado. Debe ser la misma que la ubicación del grupo de CAs.
    • Grupo de ACs: el grupo de ACs responsable de emitir el certificado.
    • Plantilla de certificado: la plantilla que quieras usar para emitir certificados.
    • Dominio: el nombre de dominio del sitio que quieres proteger con un certificado SSL o TLS.
  6. Haz clic en Generar certificado.

  7. Una vez creado el certificado, haz clic en Ver. El certificado de prueba o de muestra se muestra en la misma página, en un panel independiente.

  8. Si no se puede emitir el certificado debido a conflictos, resuelve los conflictos y vuelve a enviar la solicitud del certificado de prueba.

Emitir certificados con una plantilla de certificado

Para emitir un certificado firmado mediante una plantilla de certificado, haz lo siguiente:

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. Haz clic en la pestaña Gestor de plantillas.

  3. En la página Plantillas de certificado, haga clic en la plantilla que quiera usar. Aparecerá la página Detalles de la plantilla.

  4. Haz clic en Crear certificado.

  5. Selecciona una región. Esta región debe ser la misma que la de la agrupación de CAs que quieras usar.

  6. Selecciona el grupo de autoridades de certificación.

  7. Para generar un certificado mediante una solicitud de firma de certificado (CSR), consulta Solicitar un certificado mediante una CSR.

  8. Para generar un certificado con una clave generada automáticamente, consulta Solicitar un certificado con una clave generada automáticamente.

Generar el certificado

  1. Haz clic en Generar certificado. Si el certificado se genera correctamente, se muestra un mensaje.
  2. Para ver el certificado generado, haz clic en Ver certificado y, a continuación, en Ver.

Opcional: Descargar el certificado firmado

  1. Para descargar la cadena de certificados codificada en PEM, haz clic en Descargar cadena de certificados.
  2. Para descargar la clave privada codificada en PEM asociada, haz clic en Descargar clave privada.

gcloud

Para emitir un certificado mediante una plantilla de certificado, añade la marca --template al comando gcloud privateca certificates create con el siguiente formato:

--template=projects/PROJECT_ID/locations/LOCATION/certificateTemplates/CERTIFICATE_TEMPLATE

Sustituye CERTIFICATE_TEMPLATE por el nombre de la plantilla de certificado que quieras usar para emitir este certificado. La plantilla especificada debe estar en la misma ubicación que el grupo de CAs emisoras. Para obtener más información, consulta los ejemplos que se proporcionan para generar certificados DNS de prueba y generar certificados de producción.

Terraform

/**
 * Copyright 2022 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

resource "google_privateca_certificate_template" "template" {
  location    = "us-central1"
  name        = "my-certificate-template"
  description = "An updated sample certificate template"

  identity_constraints {
    allow_subject_alt_names_passthrough = true
    allow_subject_passthrough           = true

    cel_expression {
      description = "Always true"
      expression  = "true"
      location    = "any.file.anywhere"
      title       = "Sample expression"
    }
  }

  passthrough_extensions {
    additional_extensions {
      object_id_path = [1, 6]
    }

    known_extensions = ["EXTENDED_KEY_USAGE"]
  }

  predefined_values {
    additional_extensions {
      object_id {
        object_id_path = [1, 6]
      }

      value    = "c3RyaW5nCg=="
      critical = true
    }

    aia_ocsp_servers = ["string"]

    ca_options {
      is_ca                  = false
      max_issuer_path_length = 6
    }

    key_usage {
      base_key_usage {
        cert_sign          = false
        content_commitment = true
        crl_sign           = false
        data_encipherment  = true
        decipher_only      = true
        digital_signature  = true
        encipher_only      = true
        key_agreement      = true
        key_encipherment   = true
      }

      extended_key_usage {
        client_auth      = true
        code_signing     = true
        email_protection = true
        ocsp_signing     = true
        server_auth      = true
        time_stamping    = true
      }

      unknown_extended_key_usages {
        object_id_path = [1, 6]
      }
    }

    policy_ids {
      object_id_path = [1, 6]
    }
  }
}

resource "google_privateca_certificate_authority" "test_ca" {
  pool                     = "my-pool"
  certificate_authority_id = "my-certificate-authority-test-ca"
  location                 = "us-central1"
  deletion_protection      = false # set to true to prevent destruction of the resource
  config {
    subject_config {
      subject {
        organization = "HashiCorp"
        common_name  = "my-certificate-authority"
      }
      subject_alt_name {
        dns_names = ["hashicorp.com"]
      }
    }
    x509_config {
      ca_options {
        # is_ca *MUST* be true for certificate authorities
        is_ca = true
      }
      key_usage {
        base_key_usage {
          # cert_sign and crl_sign *MUST* be true for certificate authorities
          cert_sign = true
          crl_sign  = true
        }
        extended_key_usage {
          server_auth = false
        }
      }
    }
  }
  key_spec {
    algorithm = "RSA_PKCS1_4096_SHA256"
  }
}


resource "google_privateca_certificate" "default" {
  pool                  = "my-pool"
  location              = "us-central1"
  certificate_authority = google_privateca_certificate_authority.test_ca.certificate_authority_id
  lifetime              = "860s"
  name                  = "my-certificate-from-template"
  pem_csr               = tls_cert_request.example.cert_request_pem
  certificate_template  = google_privateca_certificate_template.template.id
}

resource "tls_private_key" "example" {
  algorithm = "RSA"
}

resource "tls_cert_request" "example" {
  private_key_pem = tls_private_key.example.private_key_pem

  subject {
    common_name  = "example.com"
    organization = "ACME Examples, Inc"
  }
}

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Una solicitud de certificado puede fallar si se detecta un conflicto de políticas entre la política de emisión del grupo de ACs y la plantilla de certificado. En ese caso, debes resolver el conflicto de políticas antes de volver a enviar la solicitud del certificado.

Para compartir un enlace a un formulario de solicitud de certificado con otros usuarios de tu organización para que puedan solicitar un certificado con los mismos parámetros, sigue estos pasos:

Consola

  1. En la consola de Google Cloud , vaya a la pestaña Gestor de grupos de CAs y haga clic en Compartir enlace del formulario de solicitud.
  2. En el panel Enlace al formulario de solicitud de uso compartido que aparece, seleccione el grupo de ACs y la plantilla de certificado que haya elegido para crear su solicitud. Se muestra el enlace de solicitud de certificado.
  3. Copia el enlace y compártelo según sea necesario.

Ver los certificados emitidos con una plantilla

Para ver los certificados emitidos con una plantilla de certificado, sigue estos pasos:

Consola

  1. En la Google Cloud consola, ve a la pestaña Gestor de plantillas.
  2. Haga clic en la plantilla de certificado que haya usado para emitir certificados.
  3. En la página Detalles de la plantilla, haga clic en Certificados. Se muestra la lista de certificados emitidos con la plantilla de certificado seleccionada.

Siguientes pasos