Criar um modelo de certificado

Esta página descreve os atributos de um modelo de certificado e explica como criar um modelo de certificado. Para saber mais sobre modelos de certificado, consulte Sobre os modelos de certificado.

Funções exigidas

Para receber as permissões necessárias para criar um modelo de certificado, peça ao administrador para conceder a você o papel do IAM Administrador de operações de serviço de CA (roles/privateca.caManager) no projeto, na pasta ou na organização. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Criar um modelo de certificado

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

Console

  1. Acesse a página Serviço de autoridade certificadora no console do Google Cloud.

    Acesse Certificate Authority Service

  2. Clique na guia Gerenciador de modelos e em Criar modelo.

  3. Selecione um local para o modelo de certificado usando a lista Região. Ele precisa estar no mesmo local do pool de ACs que você pretende usar com o modelo de certificado.

  4. Insira 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. Clique em Próxima.

  6. Se você quiser configurar valores padrão de x.509 para certificados que usam esse modelo, clique no botão Incluir valores predefinidos em certificados emitidos com este modelo de certificado. Em seguida, clique em Configurar valores predefinidos.

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

    Definir o uso da chave base

    Essa configuração se refere ao campo Key Usage em um certificado digital. Ele especifica como a chave privada do certificado pode ser usada, como para criptografia de chaves, criptografia de dados, assinatura de certificados e assinatura de CRLs. Para mais informações, consulte Uso da chave.

    1. Para selecionar os usos de chave base, clique no botão Especificar usos de chave base em certificados emitidos neste pool de ACs e selecione uma das opções listadas.
    2. Clique em Próxima.

    Definir o uso estendido de chave

    Essa configuração se refere ao campo Extended Key Usage (EKU) em um certificado digital. Ele fornece restrições mais específicas e refinadas sobre como a chave pode ser usada, como para autenticação do servidor, autenticação do cliente, assinatura de código, proteção de e-mail e muito mais. Para mais informações, consulte Uso estendido da chave.

    Os usos de chave estendidos são definidos usando identificadores de objeto (OIDs). Se você não configurar os usos de chave estendidos, todos os cenários de uso de chaves serão permitidos.

    1. Para selecionar os usos de chave estendidos, clique no botão Gravar usos de chave estendidos em certificados emitidos neste pool de ACs e selecione uma das opções listadas.
    2. Clique em Próxima.

    Definir identificadores de políticas

    A extensão de políticas de certificados no certificado expressa as políticas que o pool de ACs emissor segue. Essa 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 pool de ACs é garantida. Essa extensão ajuda você a verificar os certificados emitidos pelo pool de ACs e como eles são usados.

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

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

    1. Opcional: adicione o identificador de política no campo Identificadores de políticas.
    2. Clique em Próxima.

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

    A extensão AIA em um certificado fornece as seguintes informações:

    • Endereço dos servidores OCSP em que você pode verificar o status de revogação do certificado.
    • O método de acesso do emissor do certificado.

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

    A adição de servidores OCSP é opcional. Para adicionar os servidores OCSP que aparecem no campo de 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. Clique em Próxima.

    Opções de AC

    O campo Opções de AC em um modelo de certificado define como o certificado resultante pode ser usado em uma hierarquia de autoridades certificadoras (ACs). Ele determina se um certificado pode ser usado para assinar outros certificados e, se for o caso, quaisquer restrições nos certificados emitidos.

    Escolha entre as opções a seguir:

    1. Incluir as configurações para descrever as extensões de CA X.509: especifique as configurações em um modelo de certificado que controlam as extensões X.509.

    2. Restrinja os certificados emitidos para que sejam usados apenas para ACs: essa opção só aparece se você marcar a caixa de seleção mencionada na etapa anterior. Esse valor booleano indica se o certificado é um certificado de AC. Se definido como true, o certificado poderá ser usado para assinar outros certificados. Se false, é um certificado de entidade final e não pode assinar outros certificados. Se você clicar nesse botão, será solicitado que defina restrições de nome para a extensão em certificados de AC.

    3. Inclua as configurações para descrever as extensões de X.509 de restrição de tamanho do caminho: especifica as configurações que controlam o tamanho de uma cadeia de certificados, originada de um certificado específico.Especifica o número máximo de ACs que podem ser encadeados a esse certificado de AC. Se o comprimento máximo do caminho do emissor for definido como 0, a AC só poderá emitir certificados de entidade final. Se estiver definido como 1, a cadeia abaixo desse certificado de AC poderá incluir apenas uma AC subordinada. Se um valor não for declarado, o número de ACs subordinados na cadeia abaixo dessa AC será ilimitado.

    4. Clique em Próxima.

    Configurar extensões adicionais

    Opcional: é possível configurar outras extensões personalizadas para incluir nos certificados emitidos pelo pool de ACs. Faça o seguinte:

    1. Clique em Adicionar item.
    2. No campo Identificador do objeto, adicione um identificador de 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 essencial, selecione A extensão é essencial.
  8. Para salvar todos os valores predefinidos, clique em Concluído.

  9. Em seguida, acesse a seção Configurar restrições de extensão. Selecione uma das seguintes opções:

    • Copiar todas as extensões de solicitações de certificado para o certificado
    • Remover todas as extensões das solicitações de certificado
    • Copiar extensões específicas de solicitações de certificado para o certificado
  10. Se você quiser copiar extensões específicas, faça o seguinte:
    • Clique no campo Extensões de certificado conhecidas e remova as extensões não obrigatórias da lista.
    • No campo Extensões personalizadas, adicione os identificadores de objetos das extensões que você quer incluir nos certificados emitidos pelo pool de ACs.

  11. Clique em Próxima e acesse a seção Configurar restrições de identidade. Para configurar restrições no assunto e nos SANs nos certificados emitidos pelo pool de AC, selecione uma ou ambas as seguintes opções:

    • Copiar o assunto das solicitações de certificado para o certificado
    • Copiar nomes alternativos do assunto (SAN, na sigla em inglês) das solicitações de certificado para o certificado
    Opcional: na seção Configurar restrições de identidade, adicione uma expressão da Linguagem de expressão comum (CEL) para definir restrições nos sujeitos do certificado. Para mais informações, consulte Como usar a CEL.

  12. Clique em Próxima e 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:

  • TEMPLATE_ID: o identificador exclusivo do modelo de certificado.
  • FILE_PATH: o arquivo 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 assunto (SAN) da solicitação de certificado seja copiada para o certificado assinado. Como alternativa, especifique --no-copy-sans para remover os SANs especificados pelo autor da chamada da solicitação de certificado.

A flag --copy-subject permite que o assunto da solicitação de certificado seja copiado para o certificado assinado. Como alternativa, especifique --no-copy-subject para remover os sujeitos especificados pelo autor da chamada da solicitação de certificado.

A flag --identity-cel-expression usa uma expressão CEL que é avaliada em relação ao assunto e ao nome alternativo do assunto do certificado antes de ser emitida e retorna um booleano que indica se a solicitação deve ser permitida. Para saber como usar uma expressão da linguagem Common Expression Language (CEL) em um modelo de certificado, consulte Como usar a CEL em modelos de certificado.

A flag --predefined-values-file especifica o caminho para um arquivo YAML que descreve os valores X.509 predefinidos definidos por esse modelo. As extensões fornecidas são copiadas para todas as solicitações de certificado que usam esse modelo, tendo precedência sobre as extensões permitidas na solicitação de certificado. Se você atualizar qualquer parte dos valores X.509 predefinidos, a atualização vai substituir o conjunto inteiro dos valores X.509 predefinidos.

Se a flag --copy-all-requested-extensions estiver definida, todas as extensões especificadas na solicitação de certificado serão copiadas para o certificado assinado.

Se a flag --copy-extensions-by-oid estiver definida, OIDs específicos serão copiados da solicitação de certificado para o certificado assinado.

Se a flag --copy-known-extensions estiver definida, extensões específicas serão copiadas da solicitação de certificado para o certificado assinado. Essas 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 na solicitação de certificado, mas mantenha os valores predefinidos definidos neste modelo.

Confira um exemplo de configuração de 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 definidos como padrão como false.

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

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

As extensões a seguir são definidas como false por padrão se um valor não for especificado:

  • Campo isCa na extensão caOptions

Criar um modelo de certificado para cenários comuns

Esta seção fornece comandos gcloud para criar um modelo de certificado para casos de uso 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 arquivo com o nome leaf_server_tls_values.yaml e adicione a seguinte configuração de TLS do servidor de entidade final a ele:

    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 com apenas domínios de teste

Para criar um modelo de certificado para emitir certificados TLS do servidor com SANs 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 arquivo leaf_server_tls_values.yaml precisa ser o mesmo do exemplo anterior.

Para mais informações sobre o uso de expressões CEL para garantir que os nomes de DNS comecem ou terminem com uma string específica, consulte Exemplos de expressões CEL.

Certificados de identidade da carga de trabalho

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

  1. Crie um arquivo com o nome leaf_mtls_values.yaml e adicione a seguinte configuração TLS mútua de entidade final a ele.

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

Para mais informações sobre o uso de expressões CEL para garantir que os nomes de DNS comecem ou terminem com uma string específica, consulte Exemplos de expressões CEL.

Conceder acesso ao modelo de certificado

Você pode usar um modelo de certificado se tiver a função de usuário do modelo de certificado de serviço de AC (roles/privateca.templateUser). Recomendamos que os autores de um modelo de certificado atribuam a função de usuário do modelo de certificado de serviço de CA aos membros da organização que possam usar esse modelo.

Para conceder o papel de usuário do modelo de certificado de serviço de CA (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:

  • TEMPLATE_ID: o identificador exclusivo do modelo de certificado.

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

Para mais informações sobre os papéis do IAM para o serviço de CA e as permissões associadas, consulte Controle de acesso com o IAM.

A seguir