Adicione políticas de emissão de certificados
A adição de políticas de emissão de certificados no serviço de AC envolve a definição de regras e restrições que regem os tipos de certificados emitidos por uma autoridade de certificação (AC). Para saber mais acerca das políticas de emissão de certificados, consulte o artigo Acerca das políticas de emissão de certificados.
Uma política de emissão de certificados permite-lhe especificar o requerente e os nomes alternativos do requerente (SANs) que podem ser incluídos nos certificados emitidos. Pode especificar a política de emissão de certificados ao criar um conjunto de ACs ou pode atualizar um conjunto de ACs existente para adicionar uma política de emissão.
Para mais informações, consulte o artigo Vista geral dos modelos e das políticas de emissão.
Antes de começar
Certifique-se de que tem a função do IAM de gestor de operações do serviço de AC (
roles/privateca.caManager
) ou administrador do serviço de AC (roles/privateca.admin
). Para ver informações sobre como conceder um IAM a um principal, consulte o artigo Conceda uma única função.
Pode adicionar uma política de emissão de certificados a um conjunto de ACs durante a criação de um conjunto de ACs ou quando atualiza um conjunto de ACs existente.
Use um dos seguintes métodos:
Consola
Aceda à página Serviço de autoridade de certificação na Google Cloud consola. Aceda ao serviço de autoridade de certificação
Na página Gestor do conjunto de CAs, clique no nome do conjunto de CAs para o qual quer adicionar uma política de emissão de certificados.
Na página CA pool, clique em
Editar.
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.
- 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.
- Clicar em Seguinte.
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 e proteção de email. Para mais informações, consulte o artigo
Utilização alargada da chave.
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.
- 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 AC e, de seguida, selecione as opções indicadas.
- Clicar em Seguinte.
A extensão de 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:
- Adicione o identificador da política no campo Identificadores de políticas.
- Clicar em Seguinte.
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.
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.
- Clicar em Seguinte.
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). As opções da AC determinam se um certificado pode ser usado para assinar outros certificados e, se for o caso, as restrições nos certificados que emite.
Escolha uma das opções seguintes:
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.
Restringir os certificados emitidos para utilização apenas em ACs: esta opção aparece apenas 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. Sefalse
, o certificado é 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 em certificados da AC.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 tempo de duração de uma cadeia de certificados, originada de um certificado específico. Se o comprimento máximo do caminho do emissor estiver definido como
0
, a AC só pode emitir certificados de entidade final. Se estiver definido como1
, a cadeia abaixo deste certificado da AC só pode incluir uma AC subordinada. Se não for declarado um valor, o número de ACs subordinadas na cadeia abaixo desta AC não tem limite.- Clicar em Seguinte.
Para configurar extensões personalizadas adicionais a incluir nos certificados emitidos pelo conjunto de ACs, faça o seguinte:
- Clique em Adicionar item.
- No campo Identificador do objeto, adicione um identificador do 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 fundamental, selecione A extensão é fundamental.
Para guardar todas as configurações de valor de base, clique em Concluído.
gcloud
Para usar a CLI do Google Cloud para adicionar uma política de emissão de certificados a um conjunto de ACs, tem de criar um ficheiro YAML que descreva as restrições nos certificados que o conjunto de ACs pode emitir. O conteúdo corresponde a uma IssuancePolicy.
Com o editor do Cloud Shell, crie um ficheiro
policy.yaml
com o seguinte conteúdo:identityConstraints: allowSubjectPassthrough: true allowSubjectAltNamesPassthrough: true
Onde:
- O campo
allowSubjectPassthrough
é obrigatório. Se o campoallowSubjectPassthrough
estiver definido comotrue
, o campo do assunto é copiado de um pedido de certificado para o certificado assinado. Caso contrário, o assunto pedido é rejeitado. - Se o campo
allowSubjectAltNamesPassthrough
estiver definido comotrue
, a extensão SubjectAltNames é copiada de um pedido de certificado para o certificado assinado. Caso contrário, os SubjectAltNames pedidos são rejeitados.
- O campo
Para atualizar a política de emissão de certificados de um conjunto de ACs através do ficheiro criado no passo anterior, execute o seguinte comando:
gcloud privateca pools update POOL_NAME --location LOCATION --issuance-policy FILE_PATH
Substitua o seguinte:
- POOL_NAME: o nome do grupo de ACs.
- LOCATION: a localização do grupo de ACs. Para ver a lista completa de localizações, consulte Localizações.
- FILE_PATH: o caminho do ficheiro
policy.yaml
.
Para mais informações sobre o comando
gcloud privateca pools update
, consulte gcloud privateca pools update.
Restrições suportadas
O serviço de AC suporta as seguintes restrições de política de emissão. Pode combinar as seguintes restrições conforme necessário para criar uma política de emissão de certificados personalizada.
Restrinja ou force valores X.509 permitidos
Um conjunto de ACs pode restringir os valores X.509 permitidos em pedidos de certificados através da configuração do campo passthrough_extensions.
Um conjunto de ACs também pode especificar explicitamente valores X.509 a serem adicionados a todos os respetivos certificados emitidos, substituindo quaisquer valores pedidos, através do campo baseline_values.
Os valores de baseline_values de um conjunto de CA permitem especificar as seguintes propriedades:
Também pode usar estas opções em conjunto.
Se atualizar qualquer parte do campo baseline_values
, a atualização substitui o conjunto completo de valores no campo baseline_values
.
Exemplo: restrinja uma AC para emitir apenas certificados de entidade final com valores X.509 para TLS mútuo (mTLS).
policy.yaml
baselineValues: caOptions: isCa: false keyUsage: baseKeyUsage: digitalSignature: true keyEncipherment: true extendedKeyUsage: clientAuth: true serverAuth: true
Exemplo: restrinja uma AC para emitir apenas certificados de assinatura de código de entidade final com um URL OCSP AIA de base.
policy.yaml
baselineValues: caOptions: isCa: false keyUsage: baseKeyUsage: digitalSignature: true extendedKeyUsage: codeSigning: true aiaOcspServers: - "http://foo.bar/revocation" additionalExtensions: - objectId: objectIdPath: - 1 - 2 - 3 critical: false value: "base64 encoded extension value"
Para mais informações acerca do perfil do certificado para mTLS de entidade, consulte o artigo mTLS de entidade.
Restrinja os campos de identidade permitidos
Para restringir a identidade dos certificados emitidos através de um conjunto de ACs, pode adicionar uma expressão da [Linguagem de expressão comum (CEL)][4]{: .external} ao campo identity_constraints da política de emissão. As expressões CEL permitem restrições arbitrárias sobre o nome do domínio do assunto (incluindo o nome comum) e os SANs de um certificado.
Para mais informações sobre a utilização de uma expressão CEL para restringir o assunto e os SANs, consulte o artigo Usar o IEC.
Exemplo Permitir que a AC emita apenas certificados que correspondam a um assunto especificado.
policy.yaml
identityConstraints: allowSubjectPassthrough: true allowSubjectAltNamesPassthrough: false celExpression: expression: 'subject.organization == "Example LLC" && subject.country_code in ["US", "UK"]'
O campo
celExpression
é opcional. Use uma expressão do Idioma de expressão comum (IEC) para validar o assunto e o SAN X.509 resolvidos antes de um certificado ser assinado. Para mais informações sobre a utilização de expressões CEL, consulte o artigo Usar o IEC.Exemplo: permita apenas SANs com DNS Names como
us.google.org
ou que terminem em.google.com
.policy.yaml
identityConstraints: allowSubjectPassthrough: false allowSubjectAltNamesPassthrough: true celExpression: expression: 'subject_alt_names.all(san, san.type == DNS && (san.value == "us.google.org" || san.value.endsWith(".google.com")) )'
Exemplo: permitir apenas SANs com URIs
https://google.com/webhp
ou que comecem porspiffe://example-trust-domain-1/ns/namespace1/sa/
.policy.yaml
identityConstraints: allowSubjectPassthrough: false allowSubjectAltNamesPassthrough: true celExpression: expression: 'subject_alt_names.all(san, san.type == URI && (san.value == "https://google.com/webhp" || san.value.startsWith("spiffe://example-trust-domain-1/ns/namespace1/sa/")) )'
Exemplo: permitir apenas SANs com endereços de email
example@google.com
ou que terminem com@google.org
.policy.yaml
identityConstraints: allowSubjectPassthrough: false allowSubjectAltNamesPassthrough: true celExpression: expression: 'subject_alt_names.all(san, san.type == EMAIL && (san.value == "example@google.com" || san.value.endsWith("@google.org")) )'
Exemplo: permitir apenas SANs personalizadas com um OID específico e um valor personalizado.
policy.yaml
identityConstraints: allowSubjectPassthrough: false allowSubjectAltNamesPassthrough: true celExpression: expression: 'subject_alt_names.all(san, san.type == CUSTOM && san.oid == [1, 2, 3, 4] && san.value == "custom-data" )'
Restrinja a duração da data anterior dos certificados emitidos
Para definir um not_before_time anterior para certificados emitidos, use o campo backdate_duration. Quando configurados, os certificados deste conjunto de AC têm um not_before_time igual à hora de emissão menos a duração especificada. O not_after_time é ajustado para manter a duração do certificado pedida. O elemento backdate_duration tem de ser igual ou inferior a 48 horas.
Exemplo
Para retroceder a data dos certificados em 1 hora, use o seguinte ficheiro policy.yaml
:
policy.yaml
backdateDuration: 3600s
Restrinja a duração máxima dos certificados emitidos
Para restringir a duração total dos certificados emitidos, use o campo maximum_lifetime. Se a duração pedida de um certificado for superior à duração máxima, a duração do certificado é explicitamente truncada.
Exemplo
Para permitir uma duração máxima de 30 dias, use o seguinte ficheiro policy.yaml
:
policy.yaml
maximumLifetime: 2592000s
Restrinja os modos de emissão de certificados permitidos
Pode pedir um certificado através de um pedido de assinatura de certificado (CSR) ou de uma descrição inline dos valores pedidos. Algumas organizações podem preferir adicionar limitações à opção que pode ser usada porque o último método não requer um comprovativo de posse da chave privada associada. Pode definir estas limitações através do campo allowedIssuanceModes.
Para mais informações sobre como especificar as formas como os certificados podem ser pedidos a um conjunto de ACs, consulte IssuanceModes.
Para mais informações sobre como pedir certificados, consulte o artigo Crie um pedido de certificado.
Exemplo: permitir apenas a emissão de CSRs.
policy.yaml
allowedIssuanceModes:
allowCsrBasedIssuance: True
allowConfigBasedIssuance: False
Restrinja os algoritmos de chave pública do pedido de certificado
Para restringir o comprimento mínimo da chave e os algoritmos de chave pública que os certificados podem usar, pode usar o campo allowedKeyTypes no ficheiro YAML da política de emissão de certificados. Se este campo for especificado, a chave pública do pedido de certificado tem de corresponder a um dos tipos de chaves indicados no ficheiro YAML. Se este campo não for especificado, pode usar qualquer chave, com a exceção das chaves RSA cujo tamanho do módulo seja inferior a 2048 bits. Se quiser usar uma chave RSA com um tamanho do módulo inferior a 2048 bits, tem de a permitir explicitamente através da política de emissão de certificados.
Exemplo: permitir chaves RSA com um tamanho de módulo entre 3072 bits e 4096 bits (inclusive) ou chaves do algoritmo de assinatura digital de curvas elípticas (ECDSA) sobre a curva NIST P-256.
policy.yaml
allowedKeyTypes:
- rsa:
minModulusSize: 3072
maxModulusSize: 4096
- ellipticCurve:
signatureAlgorithm: ECDSA_P256
Pode escolher um dos seguintes algoritmos de assinatura de curva elíptica:
EC_SIGNATURE_ALGORITHM_UNSPECIFIED
- Pode ser usado qualquer algoritmo de assinatura.ECDSA_P256
- Assinatura digital de curva elíptica sobre a curva NIST P-256.ECDSA_P384
- Assinatura digital de curva elíptica sobre a curva NIST P-384.EDDSA_25519
- Algoritmo de assinatura digital de curva de Edwards sobre a curva 25519, conforme descrito no RFC 8410.
O que se segue?
- Saiba mais acerca dos perfis de certificados.
- Saiba como pedir certificados.
- Saiba como configurar políticas do IAM.
- Saiba como usar o Idioma de expressão comum (IEC).
- Saiba como gerir vários controlos de políticas.