Criar uma AC subordinada por uma AC externa

Nesta página, descrevemos como criar uma autoridade de certificação (CA, na sigla em inglês) subordinada encadeada a uma AC raiz externa.

Se você tiver uma hierarquia de infraestrutura de chave pública (PKI, na sigla em inglês) que contenha uma CA raiz e CAs subordinadas, poderá manter a mesma CA raiz e criar uma CA subordinada no serviço de CA que seja encadeada à CA raiz externa. A chave e as operações da CA raiz externa permanecem fora do Google Cloud. Só é possível usar a CA raiz externa para emitir o certificado de CA subordinado para o Google Cloud. Qualquer carga de trabalho que confie na CA raiz externa confia imediatamente na AC subordinada. É possível usar a CA subordinada para emitir certificados sem precisar retornar à CA raiz externa no ambiente de execução.

Antes de começar

  • Verifique se você tem o papel do IAM Administrador de operações de serviço de CA (roles/privateca.caManager) ou Administrador de serviços de CA (roles/privateca.admin). Para mais informações, consulte Configurar políticas do IAM.
  • Identifique a AC raiz externa.
  • Defina o nome, o assunto, o período de validade e o tamanho da chave da CA subordinada. Para mais informações, consulte Determinar as configurações da CA.

Criar uma AC subordinada por uma AC externa

A criação de uma AC subordinada por uma AC externa envolve as seguintes etapas:

  1. Gerar a solicitação de assinatura de certificado de CA (CSR, na sigla em inglês) subordinada: a primeira etapa é gerar uma CSR para a CA subordinada e, em seguida, fazer o download da CSR.

  2. Receber o certificado da AC subordinada assinado pela AC raiz externa: a segunda etapa é enviar a CSR à AC raiz externa para assinatura. Siga as instruções específicas da AC raiz externa para enviar CSRs e receber certificados assinados.

  3. Importe o certificado da AC subordinada assinado para o serviço da AC: a etapa final é fazer o upload da cadeia de certificados PEM assinada usando a CLI ou o console do Google Cloud.

A seção a seguir mostra como criar uma AC subordinada a partir de uma AC raiz externa.

Criar uma CSR

Console

  1. Acesse o menu Segurança > Certificate Authority Service no console do Google Cloud.

    Acesse Certificate Authority Service

  2. Clique na guia Gerente de CAs.

  3. Clique em Criar CA.

Selecionar o tipo de CA:

  1. Clique em AC subordinada.
  2. No campo Válido para, insira o período de validade dos certificados emitidos pelo certificado de CA.
  3. Clique em A CA raiz é externa.
  4. Escolha uma das opções disponíveis para o nível da CA. Para mais informações, consulte Selecionar os níveis de operação.
  5. Em Regionalização, selecione um local da CA na lista.
  6. Clique em Seguinte.
Configurar o nome do assunto da AC
  1. No campo Organização (O), digite o nome da sua empresa.
  2. Opcional: no campo Unidade organizacional (UO), insira a subdivisão ou a unidade de negócios da empresa.
  3. Opcional: no campo Nome do país, digite um código de país com duas letras.
  4. Opcional: no campo Nome do estado ou da província, insira o nome do seu estado.
  5. Opcional: no campo Nome da localidade, digite o nome da sua cidade.
  6. No campo Nome comum da CA (CN), digite o nome da CA.
  7. No campo ID do pool, digite o nome do pool de ACs. Não é possível alterar o pool de ACs após criar a AC.
  8. Clique em Seguinte.
Configurar o algoritmo e o tamanho da chave da CA
  1. Escolha o algoritmo de chave que melhor atende às suas necessidades. Para mais informações sobre como decidir o algoritmo de chave adequado, consulte Escolher um algoritmo de chave.
  2. Clique em Seguinte.
Configurar artefatos de AC

As etapas a seguir são opcionais. Se você pular essas etapas, as configurações padrão serão aplicadas.

  1. Escolha se você quer usar um bucket do Cloud Storage gerenciado pelo Google ou autogerenciado.
  2. Se você não selecionar um bucket autogerenciado do Cloud Storage, o CA Service criará um bucket gerenciado pelo Google no mesmo local da CA.

  3. Escolha se você quer desativar a publicação de listas de revogação de certificados (CRLs) e certificados de CA no bucket do Cloud Storage.
  4. A publicação da CRL e do certificado de CA em um bucket do Cloud Storage é ativada por padrão. Para desativar essas configurações, clique nos botões de alternância.

  5. Clique em Seguinte.
Adicionar rótulos

As etapas a seguir são opcionais.

Se você quiser adicionar rótulos à AC, faça o seguinte:

  1. Clique em Adicionar item.
  2. No campo Chave 1, digite a chave do rótulo.
  3. No campo Valor 1, digite o valor do marcador.
  4. Para adicionar outro rótulo, clique em Adicionar item. Em seguida, adicione a chave e o valor do rótulo, conforme mencionado nas etapas 2 e 3.
  5. Clique em Seguinte.
Revise as configurações

Revise cuidadosamente todas as configurações e clique em Criar para criar a CA.

Fazer o download da CSR

  1. Na página Autoridade de certificação, selecione a AC que você quer ativar.
  2. Clique em Ativar.
  3. Na caixa de diálogo mostrada, clique em Fazer o download da CSR.

    Faça o download da CSR da AC.

gcloud

  1. Para criar um pool de ACs para a AC subordinada, execute o seguinte comando. Para mais informações, consulte Criar um pool de ACs.

    gcloud privateca pools create SUBORDINATE_POOL_ID
    

    Substitua SUBORDINATE_POOL_ID pelo nome do pool de ACs.

  2. Para criar uma AC subordinada no pool de ACs criado, execute o seguinte comando gcloud. O comando gcloud também cria uma CSR e a salva no arquivo FILE_NAME.

    gcloud privateca subordinates create SUBORDINATE_CA_ID \
      --pool=SUBORDINATE_POOL_ID \
      --create-csr --csr-output-file=FILE_NAME \
      --key-algorithm="ec-p256-sha256" \
      --subject="CN=Example Server TLS CA, O=Example LLC"
    

    Substitua:

    • SUBORDINATE_CA_ID: o identificador exclusivo da AC subordinada.
    • SUBORDINATE_POOL_ID: o nome do pool de ACs.
    • FILE_NAME: o nome do arquivo em que a CSR codificada em PEM está escrita.

    A flag --key-algorithm usa o algoritmo criptográfico que você quer usar para criar uma chave gerenciada do Cloud HSM para a CA.

    A sinalização --subject usa o nome X.501 do assunto do certificado.

    Para mais informações sobre o comando gcloud privateca subordinates create, consulte gcloud privateca subordinates create.

A instrução a seguir é retornada quando a CSR é criada:

Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID] and saved CSR to FILE_NAME.

Para ver a lista completa de configurações disponíveis, execute o seguinte comando:

gcloud privateca subordinates create --help

Se você perder a CSR, poderá fazer o download dela novamente usando o seguinte comando:

gcloud privateca subordinates get-csr SUBORDINATE_CA_ID \
  --pool=SUBORDINATE_POOL_ID

Terraform

  1. Para criar um pool de ACs e uma AC subordinada nesse pool de ACs, use o seguinte arquivo de configuração:

    resource "google_privateca_ca_pool" "default" {
      name     = "test-ca-pool"
      location = "us-central1"
      tier     = "ENTERPRISE"
    }
    
    resource "google_privateca_certificate_authority" "sub-ca" {
      pool = google_privateca_ca_pool.default.name
      certificate_authority_id = "my-certificate-authority-sub"
      location = "us-central1"
      config {
        subject_config {
          subject {
            organization = "HashiCorp"
            common_name = "my-subordinate-authority"
          }
          subject_alt_name {
            dns_names = ["hashicorp.com"]
          }
        }
        x509_config {
          ca_options {
            is_ca = true
            # Force the sub CA to only issue leaf certs
            max_issuer_path_length = 0
          }
          key_usage {
            base_key_usage {
              cert_sign = true
              crl_sign = true
            }
            extended_key_usage {
            }
          }
        }
      }
      lifetime = "86400s"
      key_spec {
        algorithm = "RSA_PKCS1_4096_SHA256"
      }
      type = "SUBORDINATE"
    }
    
  2. Para buscar a CSR, anexe a configuração a seguir.

    data "google_privateca_certificate_authority" "sub-ca-csr" {
      location = "us-central1"
      pool = google_privateca_ca_pool.default.name
      certificate_authority_id = google_privateca_certificate_authority.sub-ca.certificate_authority_id
    }
    
    output "csr" {
      value = data.google_privateca_certificate_authority.sub-ca-csr.pem_csr
    }
    
  3. Execute terraform apply.

Assinar a CSR

Transmita o arquivo de CSR gerado para o membro da sua organização responsável pela emissão do certificado e solicite que ele o assine. As etapas específicas dependem da configuração da organização.

Teste uma CA raiz simples usando os seguintes comandos openssl:

Shell

Defina as configurações da nova CA raiz.

cat > root.conf <<- EOM
[ req ]
distinguished_name = req_distinguished_name
x509_extensions    = v3_ca
prompt             = no
[ req_distinguished_name ]
commonName = Sample Root
[ v3_ca ]
subjectKeyIdentifier=hash
basicConstraints=critical, CA:true
EOM

Crie a nova CA raiz.

openssl req -x509 -new -nodes -config root.conf -keyout rootCA.key \
  -days 3000 -out rootCA.crt -batch

Configure as extensões que precisam ser adicionadas ao novo certificado de CA subordinado.

cat > extensions.conf <<- EOM
basicConstraints=critical,CA:TRUE,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
extendedKeyUsage=critical,serverAuth
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOM

Assine a CSR da AC subordinada com essa raiz.

openssl x509 -req -in FILE_NAME -CA rootCA.crt -CAkey rootCA.key \
  -CAcreateserial -out subordinate.crt -days 1095 -sha256 -extfile extensions.conf

Concatenar toda a cadeia de certificados em um único arquivo.

cat subordinate.crt > chain.crt
cat rootCA.crt >> chain.crt

Fazer upload do certificado assinado

Para ativar uma CA subordinada usando um certificado assinado, faça o seguinte:

Console

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

    Acesse Certificate Authority Service

  2. Clique na guia Gerente de CAs.

  3. Em Autoridades de certificação, escolha a AC subordinada que você criou.

  4. Clique em Ativar.

  5. Na caixa de diálogo exibida, clique em Fazer o download da CSR para salvar o arquivo da CSR codificado em PEM que a CA emissora pode assinar.

  6. Clique em Seguinte.

  7. No campo Fazer upload da cadeia de certificados, clique em Procurar.

  8. Faça upload do arquivo de certificado assinado com a extensão .crt.

  9. Clique em Activate.

gcloud

gcloud privateca subordinates activate SUBORDINATE_CA_ID \
  --pool=SUBORDINATE_POOL_ID \
  --pem-chain ./chain.crt

Substitua:

  • SUBORDINATE_CA_ID: o identificador exclusivo da AC subordinada que você quer ativar.
  • SUBORDINATE_POOL_ID: o nome do pool de ACs que contém a AC subordinada.

A sinalização --pem-chain é obrigatória. Essa sinalização usa o arquivo que contém a lista de certificados codificados em PEM. A lista de certificados começa com o certificado da CA atual e termina com o certificado da CA raiz.

Para saber mais sobre o comando gcloud privateca subordinates activate, consulte gcloud privateca subordinates activate.

A seguinte instrução é retornada quando o certificado assinado é enviado:

Activated certificate authority [SUBORDINATE_CA_ID].

Terraform

  1. Salvar o certificado de CA assinado localmente como subordinate.crt.
  2. Salve localmente os certificados de CA do signatário como rootCA.crt.
  3. Remova a configuração para buscar a CSR mencionada na primeira etapa enquanto ela tenta buscar a CSR, o que não é permitido após a ativação da AC.
  4. Atualize a configuração da AC subordinada com os campos a seguir e execute terraform apply.

      pem_ca_certificate     = file("subordinate.crt")
      subordinate_config {
        pem_issuer_chain {
            pem_certificates = [file("rootCA.crt")] 
        }
      }
    

    Se a cadeia do emissor incluir mais de uma AC, especifique o valor como [file("intermediateCA.cert"), file("rootCA.crt")].

A seguir