Peça um certificado através de um modelo de certificado

Esta página descreve como pedir um certificado através de um modelo de certificado.

Os modelos de certificados permitem-lhe implementar controlos de políticas detalhados sobre a emissão de certificados. Por exemplo, pode usar modelos de certificados para padronizar a emissão de certificados TLS de servidor em pools de ACs na sua organização. Em alternativa, pode usar modelos de certificados para aplicar políticas a um nível mais detalhado, como a utilizadores específicos. Isto é útil em situações em que precisa de restringir os tipos de certificados que diferentes indivíduos podem emitir. Também pode reutilizar modelos para cenários de emissão comuns.

Antes de começar

  1. Prepare o seu ambiente para o serviço de CA.

  2. Para receber as autorizações necessárias para emitir certificados através de um modelo de certificado, peça ao seu administrador para lhe conceder a função de IAM de utilizador do modelo de certificado do serviço de AC (roles/privateca.templateUser) no modelo de certificado.

    Para mais informações sobre as funções de IAM predefinidas para o serviço de AC, consulte o artigo Controlo de acesso com a IAM.

    Para ver informações sobre como conceder uma função do IAM a um principal, consulte o artigo Conceda uma única função.

Emissão de certificado de teste

Antes de usar um modelo de certificado para pedir um certificado assinado, recomendamos que verifique se o modelo de certificado consegue gerar um certificado com êxito. A emissão de certificados falha quando existe um conflito entre as políticas de emissão do conjunto de ACs e as políticas do modelo de certificado. Ao testar a emissão, pode identificar e resolver proativamente estes conflitos. Tenha em atenção que os certificados de teste não são codificados em PEM, não são assinados e não incorrem em cobranças pela geração.

Para testar a emissão de certificados através de um modelo de certificado, siga estes passos:

Consola

  1. Aceda à página Serviço de autoridade de certificação na Google Cloud consola.

    Aceda ao serviço de autoridade de certificação

  2. Clique no separador Gestor de modelos.

  3. Clique no modelo de certificado que quer testar. É apresentada a página Detalhes do modelo.

  4. Para criar um pedido de teste, clique em Criar certificado e, de seguida, clique em Testar emissão de certificado. É apresentado o formulário de pedido de certificado.

  5. Especifique os seguintes detalhes necessários para criar um pedido de certificado:

    • Região: localização do certificado. Tem de ser igual à localização do conjunto de CA.
    • Grupo de ACs: o grupo de ACs responsável pela emissão do certificado.
    • Modelo de certificado: o modelo que quer usar para a emissão de certificados.
    • Domínio: o nome do domínio do site que quer proteger com um certificado SSL ou TLS.
  6. Clique em Gerar certificado.

  7. Depois de criar o certificado, clique em Ver. O certificado de teste ou amostra é apresentado na mesma página num painel separado.

  8. Se a emissão do certificado falhar devido a conflitos, resolva os conflitos e envie novamente o pedido de certificado de teste.

Emitir certificados através de um modelo de certificado

Para emitir um certificado assinado através de um modelo de certificado, faça o seguinte:

Consola

  1. Aceda à página Serviço de autoridade de certificação na Google Cloud consola.

    Aceda ao Certificate Authority Service}

  2. Clique no separador Gestor de modelos.

  3. Na página Modelos de certificados, clique no modelo de certificado que quer usar. É apresentada a página Detalhes do modelo.

  4. Clique em Criar certificado.

  5. Selecione uma região. Esta região tem de ser igual à região do conjunto de ACs que pretende usar.

  6. Selecione o grupo de CA.

  7. Para gerar um certificado através de um pedido de assinatura de certificado (CSR), consulte o artigo Peça um certificado através de um CSR.

  8. Para gerar um certificado com uma chave gerada automaticamente, consulte o artigo Peça um certificado com uma chave gerada automaticamente.

Gere o certificado

  1. Clique em Gerar certificado. Se o certificado for gerado com êxito, é apresentada uma mensagem.
  2. Para ver o certificado gerado, clique em Ver certificado e, de seguida, clique em Ver.

Opcional: transfira o certificado assinado

  1. Para transferir a cadeia de certificados codificada PEM, clique em Transferir cadeia de certificados.
  2. Para transferir a chave privada codificada em PEM associada, clique em Transferir chave privada.

gcloud

Para emitir um certificado através de um modelo de certificado, adicione a flag --template ao comando gcloud privateca certificates create no seguinte formato:

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

Substitua CERTIFICATE_TEMPLATE pelo nome do modelo de certificado que quer usar para emitir este certificado. O modelo especificado tem de estar na mesma localização que o conjunto da AC emissora. Consulte os exemplos fornecidos para gerar certificados DNS de teste e gerar certificados de produção para mais informações.

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 como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

Um pedido de certificado pode falhar se for detetado um conflito de políticas entre a política de emissão do conjunto de ACs e o modelo de certificado. Quando isto acontece, tem de resolver o conflito de políticas antes de poder enviar novamente o pedido de certificado.

Para partilhar um link do formulário de pedido de certificado com outras pessoas na sua organização para que possam pedir um certificado com os mesmos parâmetros, faça o seguinte:

Consola

  1. Na Google Cloud consola, aceda ao separador Gestor do conjunto de ACs e clique em Link do formulário de pedido de partilha.
  2. No painel Link do formulário de pedido de partilha apresentado, selecione o conjunto de ACs e o modelo de certificado que escolheu para criar o seu pedido. É apresentado o link do pedido de certificado.
  3. Copie o link e partilhe-o conforme necessário.

Veja os certificados emitidos através de um modelo

Para ver os certificados emitidos através de um modelo de certificado, faça o seguinte:

Consola

  1. Na Google Cloud consola, aceda ao separador Gestor de modelos.
  2. Clique no modelo de certificado que usou para a emissão de certificados.
  3. Na página Detalhes do modelo, clique em Certificados. É apresentada a lista de certificados emitidos através do modelo de certificado selecionado.

O que se segue?