Criar um modelo de certificado
Esta página descreve os atributos de um modelo de certificado e explica como criar um. Para saber mais sobre modelos de certificado, consulte Sobre 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 de Gerente de operações do serviço de AC (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 usando personalizados papéis ou outros predefinidos papéis.
Criar um modelo de certificado
Para criar um modelo de certificado, use um dos seguintes métodos:
Console
Acesse a página Certificate Authority Service no Google Cloud console.
Clique na guia Gerenciador de modelos e em Criar modelo.
Selecione um local para o modelo de certificado usando a lista Região. Esse local precisa ser o mesmo do pool de ACs que você pretende usar com o modelo de certificado.
Insira um identificador exclusivo para o modelo de certificado no campo ID do modelo de certificado. Opcional: forneça uma descrição para o modelo de certificado.
Clique em Próxima.
Se você quiser configurar valores x.509 padrão para certificados que usam esse modelo, clique na opção Incluir valores predefinidos em certificados emitidos com este modelo de certificado. Em seguida, clique em Configurar valores predefinidos.
Configure os valores predefinidos usando as seguintes informações:
Definir o uso da chave base
Essa configuração se refere ao campo
Key Usageem um certificado digital. Ele especifica como a chave privada do certificado pode ser usada, como para criptografia de chave, criptografia de dados, assinatura de certificado e assinatura de CRL. Para mais informações, consulte Uso de chaves.- Para selecionar os usos de chave base, clique na opção Especificar usos de chave base para certificados emitidos neste pool de ACs e selecione as opções listadas.
- Clique em Próxima.
Definir o uso de chave estendido
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 de servidor, autenticação de cliente, assinatura de código, proteção de e-mail e muito mais. Para mais informações, consulte Uso de chave estendido.Os usos de chave estendidos são definidos usando identificadores de objetos (OIDs). Se você não configurar os usos de chave estendidos, todos os cenários de uso de chave serão permitidos.
- Para selecionar os usos de chave estendidos, clique na opção Gravar usos de chave estendidos para certificados emitidos neste pool de ACs e selecione as opções listadas.
- Clique em Próxima.
Definir identificadores de política
A extensão de políticas de certificado 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 do certificado, como os certificados são revogados e como a integridade do pool de ACs é garantida. Essa extensão ajuda a verificar os certificados emitidos pelo pool de ACs e como eles são usados.
Para mais informações, consulte Políticas de certificado.
Para especificar a política que define o uso do certificado, faça o seguinte:
- Opcional: adicione o identificador de política no campo Identificadores de política.
- 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 é possível verificar o status de revogação do certificado.
- O método de acesso para o 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:
- Clique em Adicionar item.
- No campo URL do servidor, adicione o URL do servidor OCSP.
- Clique em Concluído.
- Clique em Próxima.
Opções de CA
O campo Opções de CA em um modelo de certificado define como o certificado resultante pode ser usado em uma hierarquia de autoridade certificadora (CA). Ele determina essencialmente se um certificado pode ser usado para assinar outros certificados e, em caso afirmativo, quaisquer restrições nos certificados emitidos.
Escolha entre as opções a seguir:
Incluir as configurações para descrever as extensões de CA do X.509: especifique as configurações em um modelo de certificado que controla as extensões X.509.
Restringir os certificados emitidos para que sejam usados apenas para CAs: essa opção aparece apenas se você selecionar a caixa de seleção mencionada na etapa anterior. Esse valor booleano indica se o certificado é um certificado de CA. Se definido como
true, o certificado poderá ser usado para assinar outros certificados. Sefalse, ele é um certificado de entidade final e não pode assinar outros certificados. Se você clicar nessa opção, será solicitado que defina restrições de nome para a extensão em certificados de CA.Incluir as configurações para descrever as extensões de restrição de tamanho do caminho do X.509: especifique as configurações que controlam o tamanho de uma cadeia de certificados, originada de um certificado específico.Ele especifica o número máximo de CAs que podem ser encadeadas a esse certificado de CA. Se o comprimento máximo do caminho do emissor estiver definido como
0, a CA só poderá emitir certificados de entidade final. Se estiver definido como1, a cadeia abaixo desse certificado de CA poderá incluir apenas uma CA subordinada. Se um valor não for declarado, o número de CAs subordinadas na cadeia abaixo dessa CA será ilimitado.- Clique em Próxima.
Configurar extensões adicionais
Opcional: é possível configurar outras extensões personalizadas para incluir nos certificados emitidos pelo pool de CAs. Faça o seguinte:
- Clique em Adicionar item.
- No campo Identificador de objeto, adicione um identificador de objeto válido formatado como dígitos separados por pontos.
- No campo Valor, adicione o valor codificado em base64 para o identificador.
- Se a extensão for essencial, selecione A extensão é essencial.
Para salvar todos os valores predefinidos, clique em Concluído.
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 de solicitações de certificado
- Copiar extensões específicas de solicitações de certificado para o certificado
- Se você escolher copiar extensões específicas, faça o seguinte:
- Clique no campo Extensões de certificado conhecidas e desmarque as extensões desnecessárias da lista.
- No campo Extensões personalizadas, adicione os identificadores de objeto para as extensões que você quer incluir nos certificados emitidos pelo pool de ACs.
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 CAs, selecione uma ou ambas as opções a seguir:
- 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
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 de nome alternativo do assunto (SAN, na sigla em inglês) da solicitação de certificado seja copiada para o certificado assinado. Como alternativa, especifique --no-copy-sans para remover todos 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 todos os assuntos 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 emitido e retorna um booleano que indica se a solicitação deve ser permitida. Para informações sobre como usar uma expressão da Common Expression Language (CEL) para um modelo de certificado, consulte Como usar a CEL para modelos de certificado.
A flag --predefined-values-file especifica o caminho para um arquivo YAML que descreve todos 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 todas as extensões permitidas na solicitação de certificado. Se você atualizar qualquer parte dos valores X.509 predefinidos, a atualização substituirá todo o conjunto de 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 ainda manter os valores predefinidos definidos nesse 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 false por padrão.
As seguintes extensões são omitidas se um valor não for especificado:
keyUsagepolicyIdsadditionalExtensions- campo
maxIssuerPathLengthna extensãocaOptions
As seguintes extensões são definidas como false por padrão se um valor não for especificado:
- campo
isCana extensãocaOptions
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, use as seguintes instruções:
Crie um arquivo com o nome
leaf_server_tls_values.yamle 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: falsePara permitir apenas certificados com SANs do tipo
DNS, execute o seguinte comandogcloud: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 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 arquivo leaf_server_tls_values.yaml precisa ser o mesmo do exemplo anterior.
Para mais informações sobre como usar expressões CEL para garantir que os nomes de DNS comecem ou terminem com uma string específica, consulte Expressões de exemplo de CEL.
Certificados da Identidade da carga de trabalho
Para criar um modelo de certificado para emitir certificados TLS mútuos (mTLS), use as seguintes instruções:
Crie um arquivo com o nome
leaf_mtls_values.yamle adicione a seguinte configuração de 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: falsePara permitir apenas certificados com SPIFFE SANs de URI, use o seguinte
gcloudcomando: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 como usar expressões CEL para garantir que os nomes de DNS comecem ou terminem com uma string específica, consulte Expressões de exemplo de CEL.
Conceder acesso ao modelo de certificado
Você pode usar um modelo de certificado se tiver o papel de Usuário do modelo de certificado de serviço de CA (roles/privateca.templateUser). Recomendamos que os autores de um modelo de certificado concedam a função de Usuário do modelo de certificado de serviço de AC aos membros da organização que possam usar esse modelo de certificado.
Para conceder o papel de Usuário do modelo de certificado de 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:
- 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
- Saiba mais sobre a Common Expression Language.
- Aprenda a usar o Common Expression Language.
- Saiba mais sobre perfis de certificado.