Adicionar uma política de emissão de certificados a um pool de ACs

Nesta página, descrevemos como adicionar uma política de emissão de certificados a um pool de autoridade de certificação (CA, na sigla em inglês).

Uma política de emissão de certificados permite especificar os nomes alternativos do assunto e do assunto (SANs, na sigla em inglês) 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 de modelos e 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 de CA (roles/privateca.caManager) ou de Administrador de serviço de CA (roles/privateca.admin). Para informações sobre como conceder um IAM a um principal, consulte Conceder um único papel.

  • Criar um pool de CA.

Adicionar um arquivo de política de emissão de certificados

Para adicionar uma política de emissão de certificados a um pool de ACs, faça o seguinte:

Console

  1. Acesse a página Certificate Authority Service no console do Google Cloud.

    Acessar o Certificate Authority Service (em inglês)

  2. Na página Gerenciador de pools de CAs, clique no nome do pool de ACs a que você quer adicionar uma política de emissão de certificados.

  3. Na página Pool de CAs, clique em Editar.

Configurar restrições de identidade

Para configurar restrições de assunto e SANs nos certificados que o pool de CAs emite, faça o seguinte:

  1. Opcional: para impedir a transmissão do assunto de solicitações de certificado, clique no botão de alternância.
  2. Opcional: para impedir a transmissão de nomes alternativos do assunto em solicitações de certificado, clique no botão de alternância.
  3. Opcional: adicione uma expressão Common Expression Language (CEL) para impor restrições a assuntos de certificados. Para mais informações, consulte Como usar a CEL.
  4. Clique em Próxima.
Configurar restrições de extensão

Para impedir que todas as extensões de solicitações de certificado sejam incluídas nos certificados emitidos, clique no botão de ativação.

Depois de clicar no botão de alternância, você verá o campo Extensões de certificado conhecidas, que pode ser usado para selecionar as extensões de certificado. Para selecionar as extensões de certificado, faça o seguinte:

  1. Opcional: clique no campo Extensões de certificado conhecidas e limpe as extensões desnecessárias do menu.
  2. Opcional: no campo Extensões personalizadas, adicione os identificadores de objeto das extensões que você quer incluir nos certificados emitidos pelo pool de ACs.
Configurar valores de referência

Para configurar valores de referência nos certificados emitidos do pool de ACs, faça o seguinte:

  1. Clique no botão de alternância.
  2. Clique em Configurar valores de referência.
Definir o uso da chave base

Use esta configuração para definir as maneiras como a chave contida no certificado pode ser usada. As opções para uso de chaves incluem codificação de chaves, de dados, de certificados, de CRLs e muito mais.

Para mais informações, consulte Uso da chave.

Para definir os usos de chave base, faça o seguinte:

  1. Opcional: na janela exibida, clique no botão de alternância se quiser especificar os usos de chave base para os certificados.
  2. Marque as caixas de seleção correspondentes a como você quer que a chave seja usada.
  3. Selecione as formas gerais em que você quer que uma chave seja usada.
  4. Clique em Próxima.
Definir o uso estendido da chave

É possível usar essa configuração para selecionar cenários mais granulares em que a chave contida no certificado pode ser usada. As opções incluem autenticação do servidor, autenticação do cliente, assinatura de código, proteção de e-mail e muito mais.

Os usos de chave estendidos são definidos com identificadores de objeto (OIDs). Se você não configurar os usos de chave estendidos, todos os cenários de uso de chave serão permitidos.

Para saber mais, consulte Uso estendido de chave.

Para definir os usos de chave estendidos, faça o seguinte:

  1. Opcional: para especificar o uso de chaves estendidos para os certificados que o pool de CAs emite, clique no botão de alternância.
  2. Marque as caixas de seleção dos cenários de uso de chave estendido.
  3. Clique em Próxima.
Definir identificadores de políticas

A extensão das políticas de certificado no certificado expressa as políticas que o pool de CAs emissoras 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 que o pool de CAs emite e a ver como os certificados são usados.

Veja mais informações em Políticas de certificado.

Para especificar a política que define o uso do certificado, faça o seguinte:

  1. Opcional: adicione o identificador da política no campo Identificadores da política.
  2. 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 de onde é 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.

Para adicionar os servidores OCSP que aparecem no campo de extensão AIA nos certificados, faça o seguinte. O procedimento a seguir é opcional.

  1. Opcional: clique em Adicionar item.
  2. No campo URL do servidor, adicione o URL do servidor OCSP.
  3. Clique em Concluído.
  4. Clique em Próxima.
Configurar outras extensões

Para configurar outras extensões personalizadas que serão incluídas nos certificados emitidos pelo pool de ACs, faça o seguinte. O procedimento a seguir é opcional.

  1. Clique em Adicionar item.
  2. No campo Identificador de objeto, adicione um identificador de objeto válido que seja 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 essencial, selecione A extensão é essencial.

Para salvar todas as configurações dos valores de referência, clique em Concluído.

gcloud

Para usar a Google Cloud CLI para adicionar uma política de emissão de certificados a um pool de CAs, crie um arquivo YAML que descreva as restrições nos certificados que o pool de CAs pode emitir. O conteúdo corresponde a uma IssuancePolicy.

  1. 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 campo allowSubjectPassthrough estiver definido como true, o campo do assunto será copiado de uma solicitação de certificado no certificado assinado. Caso contrário, o Assunto solicitado será descartado.
    • Se o campo allowSubjectAltNamesPassthrough estiver definido como true, a extensão SubjectAltNames será copiada de uma solicitação de certificado para o certificado assinado. Caso contrário, o SubjectAltNames solicitado será descartado.
  2. Para atualizar a política de emissão de certificados de um pool de ACs usando o arquivo criado na etapa anterior, execute o seguinte comando:

    gcloud privateca pools update POOL_NAME \
      --issuance-policy FILE_PATH
    

    Substitua:

    • POOL_NAME: nome do pool de ACs.
    • FILE_PATH: o caminho do arquivo policy.yaml.

    Para mais informações sobre o comando gcloud privateca pools update, consulte gcloud privateca pools update.

Para mais informações, consulte Criar um pool de ACs.

Restrições compatíveis

O CA Service é compatível com as restrições de política de emissão a seguir. É possível combinar as restrições a seguir conforme necessário para criar uma política de emissão de certificados personalizada.

Restringir ou forçar valores X.509 permitidos

Um pool de CAs pode restringir os valores X.509 permitidos em solicitações de certificado, configurando o campo passthrough_extensions.

Um pool de CAs 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 ACs permitem especificar as seguintes propriedades:

Você também pode usar essas opções juntas.

Se você atualizar qualquer parte do campo baseline_values, a atualização vai substituir todo o conjunto de valores no 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 CA para emitir apenas certificados de assinatura de código de entidade final com um URL OCSP AIA de referência.

    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 do 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 Common Expression Language (CEL) ao campo identity_constraints da política de emissão. As expressões CEL permitem restrições arbitrárias sobre o nome de domínio do assunto (incluindo o nome comum) e as SANs de um certificado.

Para mais informações sobre como usar uma expressão CEL para restringir assunto e SANs, consulte Como usar CEL.

  • Exemplo: permita que a CA emita somente certificados correspondentes 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 Common Expression Language (CEL) para validar o assunto X.509 resolvido e o SAN antes da assinatura do certificado. Para mais informações sobre como usar expressões CEL, consulte Como usar CEL.

  • Exemplo: permitir apenas SANs que tenham nomes DNS como us.google.org ou 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 com 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 que tenham endereços de e-mail example@google.com ou @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 que tenham 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 o ciclo de vida máximo dos certificados emitidos

Para restringir a vida útil 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á explicitamente truncado.

Exemplo

Para permitir um ciclo de vida máximo de 30 dias, use o seguinte arquivo policy.yaml:

policy.yaml

maximumLifetime: 2592000s

Restringir modos de emissão de certificados permitidos

Você pode solicitar um certificado por uma solicitação de assinatura de certificado (CSR, na sigla em inglês) ou por 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 como os certificados podem ser solicitados de um pool de CAs, consulte IssuanceModes.

Para mais informações sobre a solicitação de certificados, consulte Solicitar um certificado e visualizar certificados emitidos.

  • Exemplo: permitir apenas a emissão de CSR.

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 certificado. 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 chaves 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 certificado.

Exemplo: permita chaves RSA com tamanho de módulo entre 3.072 bits e 4.096 bits (inclusive) ou chaves de algoritmo de assinatura digital de curva elíptica (ECDSA, na sigla em inglês) sobre a 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 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 na RFC 8410.

A seguir