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
Acesse a página Serviço de autoridade certificadora no console do Google Cloud.
Clique na guia Gerenciador de modelos e em Criar modelo.
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.
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.
Clique em Próxima.
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.
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.- 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.
- 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.
- 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.
- 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:
- Opcional: adicione o identificador de política no campo Identificadores de políticas.
- 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:
- 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 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:
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.
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. Sefalse
, é 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.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 como1
, 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.- 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:
- Clique em Adicionar item.
- No campo Identificador do 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 das solicitações de certificado
- Copiar extensões específicas de solicitações de certificado para o certificado
- 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.
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
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ãocaOptions
As extensões a seguir são definidas como false
por padrão se um valor não for especificado:
- Campo
isCa
na 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, siga estas instruções:
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
Para 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
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:
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
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
- Saiba mais sobre a Linguagem de expressão comum.
- Saiba como usar a linguagem de expressão comum.
- Saiba mais sobre os perfis de certificados.