Criar uma AC subordinada a partir de uma AC externa

Nesta página, descrevemos como criar uma autoridade de certificação (CA) subordinada que se encadeia a uma CA raiz externa.

Se você tiver uma hierarquia de infraestrutura de chave pública (ICP) que contenha uma AC raiz e ACs subordinadas, será possível manter a mesma AC raiz e criar uma AC subordinada no serviço da AC que seja encadeada à sua AC raiz externa. As operações e a chave 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. A AC subordinada é imediatamente confiável para qualquer carga de trabalho que confie na AC raiz externa. Assim, é possível usar a CA subordinada para emitir certificados sem precisar acessar a CA raiz externa no ambiente de execução.

Antes de começar

  • Verifique se você tem o papel do IAM de CA Service Operation Manager (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, assunto, período de validade e tamanho da chave para a CA subordinada. Para mais informações, consulte Determinar configurações de 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. Gere 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. Consiga o certificado de CA subordinado assinado pela CA raiz externa: a segunda etapa é enviar a CSR para a CA raiz externa para assinatura. Siga as instruções específicas da CA raiz externa para enviar CSRs e receber certificados assinados.

  3. Importar o certificado de CA subordinado assinado para o serviço de CA: a etapa final é fazer upload da cadeia de certificados PEM assinados usando a Google Cloud 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 CA manager.

  3. Clique em Criar CA.

Selecione o tipo de CA:

  1. Clique em AC subordinada.
  2. No campo Válido para, insira a duração que você quer que os certificados emitidos pelo certificado de CA sejam válidos.
  3. Clique em A CA raiz é externa.
  4. Escolha uma das opções disponíveis para o Nível de CA. Para mais informações, consulte Selecionar os níveis de operação.
  5. Em Regionalização, selecione um local de CA na lista.
  6. Clique em Próxima.
Configurar o nome do assunto da CA
  1. No campo Organização (O), digite 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, 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 região administrativa, digite o nome da sua cidade.
  6. No campo Nome comum da CA, 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 depois de criar a AC.
  8. Clique em Próxima.
Configurar o algoritmo e o tamanho da chave da CA
  1. Escolha o algoritmo de chave que melhor atende à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.
Configure 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 AC.

  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 de CRL e certificado CA 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 à CA, 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, digite o valor do rótulo.
  4. Se você 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.
Analise as configurações

Analise com atenção todas as configurações e clique em Criar para criar a AC.

Fazer o download da CSR

  1. Na página Autoridade de certificação, selecione a CA que você quer ativar.
  2. Clique em Ativar.
  3. Na caixa de diálogo exibida, 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 é gravada.

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

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

É possível testar uma CA raiz simples usando os seguintes comandos openssl:

Shell

Defina as configurações para a 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 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 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 CA 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

Faça 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 CA manager.

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

  4. Clique em Ativar.

  5. Na caixa de diálogo aberta, 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 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 flag usa o arquivo que contém a lista de certificados codificados em PEM. A lista de certificados começa com o certificado de CA atual e termina com o certificado de CA raiz.

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

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

Activated certificate authority [SUBORDINATE_CA_ID].

Terraform

  1. Salve 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 tenta buscar a CSR, que não é permitida 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 CA, especifique o valor como [file("intermediateCA.cert"), file("rootCA.crt")].

A seguir