Criar uma AC subordinada a partir de uma AC externa

Esta página descreve como criar uma autoridade certificadora (CA) subordinada que se encadeia a uma CA raiz externa.

Se você tiver uma hierarquia de infraestrutura de chaves públicas (ICP) 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 encadeia até a CA raiz externa. A chave e as operações da AC raiz externa permanecem fora do Google Cloud. Só é possível usar a AC raiz externa para emitir o certificado da AC subordinada para o Google Cloud. A AC subordinada é imediatamente confiável por qualquer carga de trabalho que confie na AC raiz externa. Em seguida, você pode usar a AC subordinada para emitir certificados sem precisar retornar à AC raiz externa no momento da execuçã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 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 para a AC subordinada. Para mais informações, consulte Determinar as configurações da AC.

Criar uma AC subordinada a partir de uma AC externa

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

  1. Gerar a solicitação de assinatura de certificado (CSR) da AC subordinada: a primeira etapa é gerar uma CSR para a AC subordinada e fazer o download dela.

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

  3. Importar o certificado de AC subordinado assinado para o serviço de AC: a etapa final é fazer 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 > Serviço de autoridade certificadora no console do Google Cloud.

    Acesse Certificate Authority Service

  2. Clique na guia Gerenciador de ACs.

  3. Clique em Criar AC.

Selecione o tipo de AC:

  1. Clique em CA subordinada.
  2. No campo Válido por, insira o período de validade dos certificados emitidos pelo certificado da AC.
  3. Clique em A raiz da AC é externa.
  4. Escolha uma das opções disponíveis para o Nível do certificado digital. Para mais informações, consulte Selecionar os níveis de operação.
  5. Em Regionalização, selecione um local de AC na lista.
  6. Clique em Próxima.
Configurar o nome do assunto da CA
  1. No campo Organização (O), insira o nome da sua empresa.
  2. Opcional: no campo Unidade organizacional (UO), insira a subdivisão da empresa ou a unidade de negócios.
  3. Opcional: no campo Nome do país, insira 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, insira o nome da sua cidade.
  6. No campo Nome comum da AC (CN), insira o nome da AC.
  7. No campo ID do pool, insira o nome do pool de ACs. Não é possível mudar o pool de ACs depois de criar a AC.
  8. Clique em Próxima.
Configurar o tamanho e o algoritmo da chave da CA
  1. Escolha o algoritmo de chave que melhor atenda às suas necessidades. Para informações sobre como decidir o algoritmo de chave adequado, consulte Escolher um algoritmo de chave.
  2. Clique em Próxima.
Configurar artefatos de CA

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 gerenciado por você.
  2. Se você não selecionar um bucket autogerenciado do Cloud Storage, o CA Service vai criar um bucket gerenciado pelo Google no mesmo local que a AC.

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

  5. Clique em Próxima.
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, insira a chave do rótulo.
  3. No campo Valor 1, insira o valor do rótulo.
  4. Se quiser 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 Próxima.
Revisar as configurações

Revise todas as configurações com cuidado e clique em Criar para criar a AC.

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 que aparece, clique em Fazer o download do CSR.

    Faça o download da CSR da AC.

gcloud

  1. Para criar um pool de ACs para a AC subordinada, execute o comando a seguir. 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 comando gcloud a seguir. O comando gcloud também cria um CSR e o 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 é gravada.

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

    A flag --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 declaração a seguir é retornada quando o CSR é criado:

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 conferir a lista completa de configurações disponíveis, execute o seguinte comando:

gcloud privateca subordinates create --help

Se você perder o CSR, faça o download novamente usando o seguinte comando:

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

Terraform

  1. Para criar um pool de CAs e uma CA subordinada nesse pool, 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 seguinte configuração.

    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 CSR gerado ao membro da sua organização responsável pela emissão de certificados e peça que ele o assine. As etapas específicas dependem da configuração da sua organização.

Você pode testar uma AC raiz simples usando os seguintes comandos openssl:

Shell

Defina as configurações da nova AC 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 AC 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 AC subordinada.

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

Assine o 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

Concatene 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 AC 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 Gerenciador de ACs.

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

  4. Clique em Ativar.

  5. Na caixa de diálogo que abrir, clique em Fazer o download da CSR para fazer o download do arquivo CSR codificado por PEM que a AC emissora pode assinar.

  6. Clique em Próxima.

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

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 flag usa o arquivo que contém a lista de certificados codificados em PEM. A lista de certificados começa com o certificado de AC atual e termina com o certificado de AC raiz.

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

A declaração a seguir é retornada quando o certificado assinado é enviado:

Activated certificate authority [SUBORDINATE_CA_ID].

Terraform

  1. Salve o certificado da AC assinado localmente como subordinate.crt.
  2. Salve os certificados de assinatura da AC localmente como rootCA.crt.
  3. Remova a configuração para buscar o CSR mencionado na primeira etapa, já que ele tenta buscar o 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 de emissor incluir mais de uma AC, especifique o valor como [file("intermediateCA.cert"), file("rootCA.crt")].

A seguir