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.

  • Crie um conjunto de ACs.

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

  1. Aceda à página Serviço de autoridade de certificação na Google Cloud consola. Aceda ao serviço de autoridade de certificação

  2. 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.

  3. Na página CA pool, clique em Editar.

Defina a utilização da chave base

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.

  1. 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.
  2. Clicar em Seguinte.
Defina a utilização alargada da chave

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.

  1. 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.
  2. Clicar em Seguinte.
Defina identificadores de políticas

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:

  1. Adicione o identificador da política no campo Identificadores de políticas.
  2. Clicar em Seguinte.
Adicione servidores OCSP de acesso a informações da autoridade (AIA)

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:

  1. Clique em Adicionar item.
  2. No campo URL do servidor, adicione o URL do servidor OCSP.
  3. Clique em Concluído.
  4. Clicar em Seguinte.
Opções de CA

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:

  1. 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.

  2. 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. Se false, 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.

  3. 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 como 1, 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.

  4. Clicar em Seguinte.
Configure extensões adicionais

Para configurar extensões personalizadas adicionais a incluir nos certificados emitidos pelo conjunto de ACs, faça o seguinte:

  1. Clique em Adicionar item.
  2. No campo Identificador do objeto, adicione um identificador do 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 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.

  1. 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 campo allowSubjectPassthrough estiver definido como true, 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 como true, a extensão SubjectAltNames é copiada de um pedido de certificado para o certificado assinado. Caso contrário, os SubjectAltNames pedidos são rejeitados.
  2. 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 por spiffe://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?