Crie um modelo de certificado

Esta página descreve os atributos de um modelo de certificado e explica como pode criar um modelo de certificado. Para saber mais acerca dos modelos de certificados, consulte o artigo Acerca dos modelos de certificados.

Funções necessárias

Para receber as autorizações de que precisa para criar um modelo de certificado, peça ao seu administrador que lhe conceda a função do IAM CA Service Operation Manager (roles/privateca.caManager) no projeto, na pasta ou na organização. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Crie um modelo de certificado

Para criar um modelo de certificado, use um dos seguintes métodos:

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 e, de seguida, em Criar modelo.

  3. Selecione uma localização para o modelo de certificado através da lista Região. Esta localização tem de ser a mesma que a do conjunto de ACs que pretende usar com o modelo de certificado.

  4. Introduza um identificador exclusivo para o modelo de certificado no campo ID do modelo de certificado. Opcionalmente, forneça uma descrição para o modelo de certificado.

  5. Clicar em Seguinte.

  6. Se quiser configurar valores x.509 predefinidos para certificados que usam este modelo, clique no botão Incluir valores predefinidos em certificados emitidos através deste modelo de certificado. Em seguida, clique em Configurar valores predefinidos.

  7. Configure os valores predefinidos com as seguintes informações:

    Defina a utilização da chave base

    Esta definição refere-se ao campo Key Usage num certificado digital. Especifica como a chave privada do certificado pode ser usada, como para encriptação de chaves, encriptação de dados, assinatura de certificados e assinatura de CRL. Para mais informações, consulte o artigo Utilização de chaves.

    1. Para selecionar as utilizações de chaves base, clique no botão Especificar utilizações de chaves base para certificados emitidos a partir deste conjunto de ACs e, de seguida, selecione as opções apresentadas.
    2. Clicar em Seguinte.

    Defina a utilização alargada da chave

    Esta definição refere-se ao campo Extended Key Usage (EKU) num certificado digital. Fornece restrições mais específicas e refinadas sobre como a chave pode ser usada, como para autenticação de servidor, autenticação de cliente, assinatura de código, proteção de email e muito mais. Para mais informações, consulte o artigo Utilização de chaves alargada.

    As utilizações alargadas da chave são definidas através de identificadores de objetos (OIDs). Se não configurar as utilizações alargadas da chave, todos os cenários de utilização da chave são permitidos.

    1. Para selecionar as utilizações alargadas da chave, clique no botão Escrever utilizações alargadas da chave para certificados emitidos a partir deste conjunto de ACs e, de seguida, selecione as opções indicadas.
    2. Clicar em Seguinte.

    Defina identificadores de políticas

    A extensão das políticas de certificados no certificado expressa as políticas que o conjunto de ACs emissoras segue. Esta extensão pode incluir informações sobre como as identidades são validadas antes da emissão de certificados, como os certificados são revogados e como a integridade do conjunto de ACs é garantida. Esta extensão ajuda a validar os certificados emitidos pelo conjunto de ACs e a ver como os certificados são usados.

    Para mais informações, consulte as Políticas de certificados.

    Para especificar a política que define a utilização do certificado, faça o seguinte:

    1. Opcional: adicione o identificador da política no campo Identificadores de políticas.
    2. Clicar em Seguinte.

    Adicione servidores OCSP de acesso a informações de autoridade (AIA)

    A extensão AIA num certificado faculta as seguintes informações:

    • Endereço dos servidores OCSP a partir dos quais pode verificar o estado de revogação do certificado.
    • O método de acesso para o emissor do certificado.

    Para mais informações, consulte o artigo Acesso a informações de autoridade.

    A adição de servidores OCSP é opcional. Para adicionar os servidores OCSP que aparecem no campo da extensão AIA nos certificados, faça o seguinte:

    1. Clique em Adicionar item.
    2. No campo URL do servidor, adicione o URL do servidor OCSP.
    3. Clique em Concluído.
    4. Clicar em Seguinte.

    Opções de CA

    O campo Opções da AC num modelo de certificado define como o certificado resultante pode ser usado numa hierarquia da autoridade de certificação (AC). Determina essencialmente se um certificado pode ser usado para assinar outros certificados e, se for o caso, quaisquer restrições nos certificados que emite.

    Escolha uma das opções seguintes:

    1. Inclua as configurações para descrever as extensões X.509 da AC: especifique as definições num modelo de certificado que controlam as extensões X.509.

    2. Restringir os certificados emitidos para utilização apenas em ACs: esta opção só aparece se selecionar a caixa de verificação mencionada no passo anterior. Este valor booleano indica se o certificado é um certificado de AC. Se estiver definido como true, o certificado pode ser usado para assinar outros certificados. Se false, é um certificado de entidade e não pode assinar outros certificados. Se clicar neste botão para ativar/desativar, é-lhe pedido que defina restrições de nomes para a extensão nos certificados da AC.

    3. Inclua as configurações para descrever as extensões X.509 de restrição do comprimento do caminho: especifique as definições que controlam o comprimento de uma cadeia de certificados, com origem num certificado específico.Especifica o número máximo de ACs que podem ser encadeadas até este certificado da AC. Se o comprimento máximo do caminho do emissor for definido como 0, a AC só pode emitir certificados de entidade final. Se for definido como 1, a cadeia abaixo deste certificado da AC só pode incluir uma AC subordinada. Se não for declarado nenhum valor, o número de ACs subordinadas na cadeia abaixo desta AC não tem limite.

    4. Clicar em Seguinte.

    Configure extensões adicionais

    Opcional: pode configurar extensões personalizadas adicionais para incluir nos certificados emitidos pelo conjunto de ACs. Faça o seguinte:

    1. Clique em Adicionar item.
    2. No campo Identificador do objeto, adicione um identificador do objeto válido formatado como dígitos separados por pontos.
    3. No campo Valor, adicione o valor codificado em base64 para o identificador.
    4. Se a extensão for fundamental, selecione A extensão é fundamental.
  8. Para guardar todos os valores predefinidos, clique em Concluído.

  9. Em seguida, aceda à secção Configurar restrições de extensões. Selecione uma das seguintes opções:

    • Copiar todas as extensões dos pedidos de certificados para o certificado
    • Remova todas as extensões dos pedidos de certificados
    • Copie extensões específicas de pedidos de certificados para o certificado
  10. Se optar por copiar extensões específicas, pode fazer o seguinte:
    • Clique no campo Extensões de certificados conhecidas e desmarque as extensões não necessárias da lista.
    • No campo Extensões personalizadas, adicione os identificadores de objetos para as extensões que quer incluir nos certificados emitidos pelo conjunto de ACs.

  11. Clique em Seguinte e aceda à secção Configure restrições de identidade. Para configurar restrições no assunto e nos SANs nos certificados emitidos pelo conjunto de ACs, selecione uma ou ambas as seguintes opções:

    • Copiar o assunto dos pedidos de certificado para o certificado
    • Copiar nomes alternativos do requerente (SAN) dos pedidos de certificado para o certificado
    Opcional: na secção Configurar restrições de identidade, adicione uma expressão do idioma de expressão comum (IEC) para definir restrições nos assuntos dos certificados. Para mais informações, consulte o artigo Usar o CEL.

  12. Clique em Seguinte e, de seguida, clique em Concluído.

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>

Substitua o seguinte:

  • TEMPLATE_ID: o identificador exclusivo do modelo de certificado.
  • FILE_PATH: o ficheiro YAML que descreve os valores X.509 definidos pelo modelo de certificado.

A flag --copy-sans permite que a extensão do nome alternativo do requerente (SAN) do pedido de certificado seja copiada para o certificado assinado. Em alternativa, pode especificar --no-copy-sans para rejeitar quaisquer SANs especificadas pelo autor da chamada do pedido de certificado.

A flag --copy-subject permite que o assunto do pedido de certificado seja copiado para o certificado assinado. Em alternativa, pode especificar --no-copy-subject para remover quaisquer assuntos especificados pelo autor da chamada do pedido de certificado.

A flag --identity-cel-expression usa uma expressão CEL que é avaliada em relação ao requerente e ao nome alternativo do requerente do certificado antes de ser emitido e devolve um valor booleano que indica se o pedido deve ser permitido. Para ver informações sobre como usar uma expressão do Idioma de expressão comum (IEC) para um modelo de certificado, consulte o artigo Usar o IEC para modelos de certificados.

O sinalizador --predefined-values-file especifica o caminho para um ficheiro YAML que descreve quaisquer valores X.509 predefinidos definidos por este modelo. As extensões fornecidas são copiadas para todos os pedidos de certificados que usam este modelo, tendo precedência sobre quaisquer extensões permitidas no pedido de certificado. Se atualizar qualquer parte dos valores X.509 predefinidos, a atualização substitui o conjunto completo dos valores X.509 predefinidos.

Se a flag --copy-all-requested-extensions estiver definida, todas as extensões especificadas no pedido de certificado são copiadas para o certificado assinado.

Se o sinalizador --copy-extensions-by-oid estiver definido, os OIDs específicos são copiados do pedido de certificado para o certificado assinado.

Se a flag --copy-known-extensions estiver definida, as extensões específicas são copiadas do pedido de certificado para o certificado assinado. Estas extensões conhecidas podem ser uma das seguintes: base-key-usage, extended-key-usage, ca-options, policy-ids ou aia-ocsp-servers.

Remova a flag --copy-all-requested-extensions para ignorar todas as extensões X.509 no pedido de certificado, mas mantenha os valores predefinidos definidos neste modelo.

Segue-se um exemplo de configuração de um modelo 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"

Os valores não especificados no YAML são omitidos ou predefinidos como false.

As seguintes extensões são omitidas se não for especificado um valor:

  • keyUsage
  • policyIds
  • additionalExtensions
  • Campo maxIssuerPathLength na extensão caOptions

As seguintes extensões têm o valor predefinido false se não for especificado um valor:

  • Campo isCa na extensão caOptions

Crie um modelo de certificado para cenários comuns

Esta secção fornece comandos gcloud para criar um modelo de certificado para exemplos de utilização comuns.

Certificados TLS do servidor DNS para qualquer domínio

Para criar um modelo de certificado para emitir certificados TLS do servidor que permitam qualquer domínio, siga estas instruções:

  1. Crie um ficheiro com o nome leaf_server_tls_values.yaml e adicione-lhe a seguinte configuração TLS do servidor de entidade final:

    leaf_server_tls_values.yaml

    keyUsage:
      baseKeyUsage:
        digitalSignature: true
        keyEncipherment: true
      extendedKeyUsage:
        serverAuth: true
    caOptions:
      isCa: false
    
  2. Para permitir apenas certificados com SANs do tipo DNS, execute o seguinte 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 mais informações sobre o comando gcloud privateca templates create, consulte gcloud privateca templates create.

Certificados TLS do servidor DNS apenas com domínios de teste

Para criar um modelo de certificado para emitir certificados TLS de servidor com SANs de DNS limitados a domínios de teste, use o seguinte 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'))"

O conteúdo do ficheiro leaf_server_tls_values.yaml tem de ser igual ao do exemplo anterior.

Para mais informações sobre a utilização de expressões CEL para garantir que os nomes DNS começam ou terminam com uma string específica, consulte as expressões de exemplo de CEL.

Certificados de identidade de carga de trabalho

Para criar um modelo de certificado para emitir certificados TLS mútuos (mTLS), use as seguintes instruções:

  1. Crie um ficheiro com o nome leaf_mtls_values.yaml e adicione-lhe a seguinte configuração de TLS mútuo de entidade final.

    leaf_mtls_values.yaml

    keyUsage:
      baseKeyUsage:
        digitalSignature: true
        keyEncipherment: true
      extendedKeyUsage:
        serverAuth: true
        clientAuth: true
    caOptions:
      isCa: false
    
  2. Para permitir apenas certificados com SANs de URI SPIFFE, use o comando gcloud seguinte:

    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 mais informações sobre o comando gcloud privateca templates create, consulte gcloud privateca templates create.

Para mais informações sobre a utilização de expressões CEL para garantir que os nomes DNS começam ou terminam com uma string específica, consulte as expressões de exemplo de CEL.

Conceda acesso ao modelo de certificado

Pode usar um modelo de certificado se tiver a função Utilizador do modelo de certificado do serviço de AC (roles/privateca.templateUser). Recomendamos que os autores de um modelo de certificado concedam a função de utilizador do modelo de certificado de serviço da AC aos membros da organização que possam usar esse modelo de certificado.

Para conceder a função Utilizador do modelo de certificado do serviço de AC (roles/privateca.templateUser) a todos no domínio example.com, use o seguinte comando gcloud:

gcloud

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

Substitua o seguinte:

  • TEMPLATE_ID: o identificador exclusivo do modelo de certificado.

Para mais informações sobre o comando gcloud privateca templates add-iam-policy-binding, consulte o artigo gcloud privateca templates add-iam-policy-binding.

Para mais informações sobre as funções da IAM para o serviço de CA e as respetivas autorizações associadas, consulte o artigo Controlo de acesso com a IAM.

O que se segue?