Adicionar políticas de emissão de certificados
Adicionar políticas de emissão de certificados no CA Service envolve definir regras e restrições que regem os tipos de certificados emitidos por uma autoridade certificadora (CA). Para saber mais sobre as políticas de emissão de certificados, consulte Sobre as políticas de emissão de certificados.
Com uma política de emissão de certificados, é possível especificar o assunto e os nomes alternativos do assunto (SANs) que podem ser incluídos nos certificados emitidos. É possível especificar a política de emissão de certificados ao criar um pool de ACs ou atualizar um pool de ACs existente para adicionar uma política de emissão.
Para mais informações, consulte Visão geral dos modelos e das políticas de emissão.
Antes de começar
Verifique se você tem o papel do IAM de gerente de operações de serviço da CA (
roles/privateca.caManager
) ou administrador de serviço da CA (roles/privateca.admin
). Para informações sobre como conceder um IAM a um principal, consulte Conceder um único papel.
É possível adicionar uma política de emissão de certificados a um pool de CAs ao criar ou atualizar um pool de CAs.
Use um dos seguintes métodos:
Console
Acesse a página Serviço de autoridade certificadora no console doGoogle Cloud . Acesse o Certificate Authority Service
Na página Gerenciador de pools de CA, clique no nome do pool de CA em que você quer adicionar uma política de emissão de certificados.
Na página Pool de CA, clique em
Editar.
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 criptografia de chave, criptografia de dados, assinatura de certificado e assinatura de CRL.
Para mais informações, consulte Uso da chave.
- Para selecionar os usos de chave base, clique na chave Especificar usos de chave base para certificados emitidos neste pool de CAs e escolha entre as opções listadas.
- Clique em Próxima.
Essa configuração se refere ao campo Extended Key Usage (EKU)
em um certificado digital. Ela oferece restrições mais específicas e refinadas sobre como a chave pode ser usada, como para autenticação de servidor e cliente, assinatura de código e proteção de e-mail. Para mais informações, consulte
Uso prolongado da chave.
Os usos de chave estendidos são definidos usando identificadores de objeto (OIDs, na sigla em inglês). Se você não configurar os usos estendidos de chave, todos os cenários de uso de chave serão permitidos.
- Para selecionar os usos estendidos de chave, clique na opção Gravar usos estendidos de chave para certificados emitidos neste pool de CAs e escolha entre as opções listadas.
- Clique em Próxima.
A extensão de políticas do certificado expressa as políticas seguidas pelo pool de CAs emissoras. 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 CAs é garantida. Essa extensão ajuda você a verificar os certificados emitidos pelo pool de CAs e ver 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:
- Adicione o identificador da política no campo Identificadores de política.
- Clique em Próxima.
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 do emissor do certificado.
Para mais informações, consulte Acesso às informações da autoridade.
Para adicionar os servidores OCSP que aparecem no campo de extensão AIA dos 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.
O campo Opções de CA em um modelo de certificado define como o certificado resultante pode ser usado em uma hierarquia de autoridade de certificação (CA). As opções de CA determinam se um certificado pode ser usado para assinar outros certificados e, em caso afirmativo, as restrições nos certificados emitidos.
Escolha entre as opções a seguir:
Inclua as configurações para descrever as extensões X.509 da CA: 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 CAs: essa opção só aparece se você marcar a caixa de seleção mencionada na etapa anterior. Esse valor booleano indica se o certificado é de uma CA. Se definido como
true
, o certificado poderá ser usado para assinar outros certificados. Sefalse
, o certificado é de entidade final e não pode assinar outros certificados. Se você clicar nesse botão, será solicitado a definir restrições de nome para a extensão em certificados de CA.Inclua 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. Se o tamanho máximo do caminho do emissor for 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.
Para configurar outras extensões personalizadas a serem incluídas nos certificados emitidos pelo pool de ACs, 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 do identificador.
- Se a extensão for essencial, selecione A extensão é essencial.
Para salvar todas as configurações de valor de referência, clique em Concluído.
gcloud
Para usar a Google Cloud CLI e adicionar uma política de emissão de certificados a um pool de CAs, crie um arquivo YAML que descreva as restrições dos certificados que o pool pode emitir. O conteúdo corresponde a uma IssuancePolicy.
Usando o editor do Cloud Shell, crie um arquivo
policy.yaml
com o seguinte conteúdo:identityConstraints: allowSubjectPassthrough: true allowSubjectAltNamesPassthrough: true
Em que:
- O campo
allowSubjectPassthrough
é obrigatório. Se o campoallowSubjectPassthrough
estiver definido comotrue
, o campo de assunto será copiado de uma solicitação de certificado para o certificado assinado. Caso contrário, o assunto solicitado será descartado. - Se o campo
allowSubjectAltNamesPassthrough
estiver definido comotrue
, a extensão SubjectAltNames será copiada de uma solicitação de certificado para o certificado assinado. Caso contrário, os SubjectAltNames solicitados serão descartados.
- O campo
Para atualizar a política de emissão de certificados de um pool de CAs usando o arquivo criado na etapa anterior, execute o seguinte comando:
gcloud privateca pools update POOL_NAME --location LOCATION --issuance-policy FILE_PATH
Substitua:
- POOL_NAME: o nome do pool de ACs.
- LOCATION: o local do pool de ACs. Para a lista completa de locais, consulte Locais.
- FILE_PATH: o caminho do arquivo
policy.yaml
.
Para mais informações sobre o comando
gcloud privateca pools update
, consulte gcloud privateca pools update.
Restrições aceitas
O CA Service é compatível com as seguintes restrições de política de emissão. É possível combinar as seguintes restrições conforme necessário para criar uma política personalizada de emissão de certificados.
Restringir ou forçar valores X.509 permitidos
Um pool de CA pode restringir os valores X.509 permitidos em solicitações de certificado configurando o campo passthrough_extensions.
Um pool de CA também pode especificar explicitamente valores X.509 a serem adicionados a todos os certificados emitidos, substituindo os valores solicitados, usando o campo baseline_values.
Os valores baseline_values de um pool de CAs permitem especificar as seguintes propriedades:
Também é possível usar essas opções juntas.
Se você atualizar qualquer parte do campo baseline_values
, a atualização vai substituir todo o conjunto de valores nesse campo.baseline_values
Exemplo: restrinja uma CA 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 de AIA básico.
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 sobre o perfil de certificado para mTLS de entidade final, consulte mTLS de entidade final.
Restringir campos de identidade permitidos
Para restringir a identidade dos certificados emitidos por um pool de CAs, adicione uma expressão da [Common Expression Language (CEL)][4]{: .external} ao campo identity_constraints da política de emissão. As expressões CEL permitem restrições arbitrárias no nome de domínio do assunto (incluindo o nome comum) e nos SANs de um certificado.
Para mais informações sobre como usar uma expressão CEL para restringir o assunto e os SANs, consulte Usar a CEL.
Exemplo: permitir que a CA 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 da Common Expression Language (CEL) para validar o assunto e o SAN X.509 resolvidos antes da assinatura de um certificado. Para mais informações sobre como usar expressões CEL, consulte Como usar a CEL.Exemplo: permitir apenas SANs com nomes de DNS 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: permita apenas SANs com URIs
https://google.com/webhp
ou que comecem comspiffe://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 e-mail
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" )'
Restringir a duração da data retroativa dos certificados emitidos
Para definir um not_before_time anterior para certificados emitidos, use o campo backdate_duration. Quando configurados, os certificados desse pool de ACs têm um not_before_time igual ao horário de emissão menos a duração especificada. O not_after_time é ajustado para manter o ciclo de vida solicitado do certificado. A backdate_duration precisa ser menor ou igual a 48 horas.
Exemplo
Para atrasar os certificados em uma hora, use o seguinte arquivo policy.yaml
:
policy.yaml
backdateDuration: 3600s
Restringir o ciclo de vida máximo dos certificados emitidos
Para restringir o ciclo de vida dos certificados emitidos, use o campo maximum_lifetime. Se o ciclo de vida solicitado de um certificado for maior que o máximo, ele será truncado explicitamente.
Exemplo
Para permitir uma duração máxima de 30 dias, use o seguinte arquivo policy.yaml
:
policy.yaml
maximumLifetime: 2592000s
Restringir os modos de emissão de certificados permitidos
Você pode solicitar um certificado usando uma solicitação de assinatura de certificado (CSR) ou uma descrição inline dos valores solicitados. Algumas organizações podem preferir adicionar limitações à opção que pode ser usada porque o último método não exige uma prova de posse da chave privada associada. É possível definir essas limitações usando o campo allowedIssuanceModes.
Para mais informações sobre como especificar as maneiras pelas quais os certificados podem ser solicitados de um pool de CAs, consulte IssuanceModes.
Para mais informações sobre como solicitar certificados, consulte Criar uma solicitação de certificado.
Exemplo: permitir apenas a emissão de CSRs.
policy.yaml
allowedIssuanceModes:
allowCsrBasedIssuance: True
allowConfigBasedIssuance: False
Restringir os algoritmos de chave pública da solicitação de certificado
Para restringir o tamanho mínimo da chave e os algoritmos de chave pública que os certificados podem usar, use o campo allowedKeyTypes no arquivo YAML da política de emissão de certificados. Se esse campo for especificado, a chave pública da solicitação de certificado precisará corresponder a um dos tipos de chave listados no arquivo YAML. Se esse campo não for especificado, você poderá usar qualquer chave, exceto as RSA com tamanho de módulo menor que 2.048 bits. Se você quiser usar uma chave RSA com tamanho de módulo menor que 2.048 bits, permita explicitamente usando a 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 curva elíptica (ECDSA) na curva NIST P-256.
policy.yaml
allowedKeyTypes:
- rsa:
minModulusSize: 3072
maxModulusSize: 4096
- ellipticCurve:
signatureAlgorithm: ECDSA_P256
Você pode escolher um dos seguintes algoritmos de assinatura de curva elíptica:
EC_SIGNATURE_ALGORITHM_UNSPECIFIED
: qualquer algoritmo de assinatura pode ser usado.ECDSA_P256
: assinatura digital de curva elíptica na curva NIST P-256.ECDSA_P384
: assinatura digital de curva elíptica na curva NIST P-384.EDDSA_25519
: algoritmo de assinatura digital de curva de Edwards na curva 25519, conforme descrito na RFC 8410.
A seguir
- Saiba mais sobre perfis de certificado.
- Saiba mais sobre como solicitar certificados.
- Saiba como configurar políticas do IAM.
- Saiba como usar a Common Expression Language (CEL).
- Saiba como gerenciar vários controles de política.