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

Esta página descreve como adicionar uma política de emissão de certificados a um certificado de uma autoridade certificadora (CA).

Uma política de emissão de certificados permite especificar o assunto e o assunto nomes alternativos (SANs) que podem ser incluídos nos certificados emitidos. Você pode especificar a política de emissão de certificados ao criar um pool de ACs ou atualizar um pool de ACs atual 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 CA Service Operation Manager (roles/privateca.caManager) ou o administrador de serviço de CA (roles/privateca.admin) papel do IAM. Para informações sobre conceder um IAM a um principal, consulte Conceder um único de rede.

  • 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 atual, faça o seguinte:

Console

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

    Acesse Certificate Authority Service

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

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

. Configurar valores de referência

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

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

Você pode usar essa configuração para definir como a chave contida em o certificado possa ser usado. As opções de uso incluem chaves encriptação de dados, assinatura de certificado, assinatura de CRL 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 você quer especificar os usos base de chave para os certificados.
  2. Marque as caixas de seleção referentes às maneiras em que você quer que uma chave seja usada.
  3. Selecione as maneiras gerais como você quer que uma chave seja usada.
  4. Clique em Next.
. Definir o uso estendido de chaves

Use essa configuração para selecionar cenários mais granulares para os quais a chave contidas no certificado possam ser usadas. As opções incluem as opções autenticação do cliente, assinatura de código, proteção de e-mail e mais.

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

Para mais informações, consulte Uso estendido de chave.

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

  1. Opcional: para especificar os usos de chave estendidos para os certificados que o Problemas no pool de ACs, clique no botão.
  2. Marque as caixas de seleção dos cenários de uso estendido de chave.
  3. Clique em Next.
. Definir identificadores de políticas

A extensão de políticas de certificado no certificado expressa as políticas que o pool de AC emissoras segue. Essa extensão pode incluir informações sobre como as identidades são validadas antes da emissão, como os certificados são revogado e como a integridade do pool de ACs é garantida. Essa extensão ajuda você verificar os certificados emitidos pelo pool de ACs e conferir como eles são usadas.

Saiba mais 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 de política no campo Identificadores de política.
  2. Clique em Next.
. 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 na os 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 Next.
. Configurar extensões adicionais

Para configurar mais extensões personalizadas a serem incluídas na certificados emitidos pelo pool de ACs, siga estas etapas: O procedimento a seguir é opcional.

  1. Clique em Adicionar item.
  2. No campo Identificador de objetos, adicione um identificador de objeto válido que é 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 é crítica.

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

Configurar restrições de extensão

Para impedir a inclusão de todas as extensões de solicitações de certificado em certificados emitidos, clique no botão de ativação.

Depois de clicar no botão, você verá a página Certificado conhecido extensões que pode ser usado para selecionar as extensões do certificado. Para selecione as extensões de certificado, faça o seguinte:

  1. Opcional: clique no campo Extensões de certificado conhecidas e limpe a não necessárias no menu.
  2. Opcional: no campo Extensões personalizadas, adicione os identificadores de objeto. extensões que você quer incluir nos certificados que o pool de ACs problemas.
. Configurar restrições de identidade

Para configurar restrições sobre o assunto e SANs nos certificados que os problemas do pool de ACs, faça o seguinte:

  1. Opcional: para não permitir a transmissão do assunto em solicitações de certificado clique no botão de alternância.
  2. Opcional: para não permitir nomes alternativos do assunto em solicitações de certificado sejam transmitidos, clique no botão.
  3. Opcional: adicionar uma expressão Common Expression Language (CEL) para colocar restrições quanto a assuntos dos certificados. Para mais informações, consulte Como usar CEL.
  4. Clique em Next.

Para saber como configurar parâmetros adicionais na política de emissão de certificados, consulte IssuancePolicy.

gcloud

Para usar a Google Cloud CLI e adicionar uma política de emissão de certificados a um pool de AC: crie um arquivo YAML que descreva as restrições nas certificados que o pool de AC pode emitir. O conteúdo corresponde a um 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 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 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. 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 \
      --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.

Restrições compatíveis

O CA Service oferece suporte às seguintes restrições de política de emissão. Você pode combinar as seguintes restrições conforme necessário para criar um certificado personalizado política de emissão.

Restringir ou forçar os 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 AC também pode especificar explicitamente valores X.509 a serem adicionados a todos os certificados emitidos, substituindo quaisquer valores solicitados, usando o campo baseline_values.

Os valores baseline_values de um pool de AC 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 substituirá todo o conjunto de valores no campo baseline_values.

  • Exemplo: restringir 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: restringir uma AC 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 de certificado para mTLS de entidade final, consulte mTLS de entidade final.

Restringir campos de identidade permitidos

Para restringir a identidade de certificados emitidos por um pool de ACs, 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 os SANs de um certificado.

Para mais informações sobre como usar uma expressão CEL para restringir assuntos e SANs, consulte Como usar 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, na sigla em inglês) para validar o assunto X.509 resolvido e o SAN antes que um certificado seja assinado. Para mais informações sobre como usar expressões CEL, consulte Como usar CEL.

  • Exemplo: permitir apenas SANs com nomes 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: 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 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 personalizados com um OID específico e 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 a vida útil solicitada de um certificado for maior que a máxima, ela será truncada.

Exemplo

Para permitir um ciclo de vida máximo 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 por uma solicitação de assinatura de certificado (CSR, na sigla em inglês) ou por uma descrição in-line 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. Você pode definir essas limitações usando o campo allowedIssuanceModes.

Para mais informações sobre como especificar de que formas os certificados podem ser solicitados de um pool de ACs, consulte IssuanceModes.

Para mais informações sobre a solicitação de certificados, consulte Crie uma solicitação de certificado.

  • 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 comprimento mínimo da chave e os algoritmos da chave pública que certificados podem usar, é possível usar o campo allowedKeyTypes no arquivo YAML da política de emissão de certificados. Se esse campo for especificado, o a chave pública da solicitação de certificado deve corresponder a um dos tipos de chave listados no arquivo YAML. Se esse campo não for especificado, será possível usar qualquer chave, com a exceção das chaves RSA com tamanho de módulo menor que 2.048 bits. Se você quiser usar uma Chave RSA com módulo menor que 2.048 bits, é necessário permitir explicitamente o uso da política de emissão de certificados.

Exemplo: permitir chaves RSA com um 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

É possível 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 com curva de Edwards sobre a curva 25519, conforme descrito na RFC 8410.

A seguir