Criar uma AC subordinada 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 CA 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 do 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 CA.

Criar uma AC subordinada por 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 de CA (CSR, na sigla em inglês) subordinada: a primeira é 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: o segundo a 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. 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 com base em uma CA raiz externa.

Criar uma CSR

Console

  1. Acesse a página Segurança > Certificate Authority Service console do Google Cloud.

    Acesse Certificate Authority Service

  2. Clique na guia Gerenciador de ACs.

  3. Clique em Criar CA.

Selecionar o tipo de CA:

  1. Clique em AC subordinada.
  2. No campo Válido por, insira o período de validade dos certificados emitidos pelo certificado da AC.
  3. Clique em A CA raiz é externa.
  4. Escolha uma das opções disponíveis para o nível da CA. Para mais mais informações, consulte Selecionar os níveis de operação.
  5. Em Regionalização, selecione um local da CA no 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, 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, 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, digite 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 algoritmo e o tamanho da chave da AC
  1. Escolha o algoritmo de chave que melhor atenda às suas necessidades. Para informações sobre como decidir o algoritmo de chave adequado, consulte Escolha 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 entre usar uma conta gerenciada pelo Google ou autogerenciada do bucket do Cloud Storage.
  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 certificados listas de revogação (CRLs) e certificados de AC para o Cloud Storage do Google Cloud.
  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 de alternância.

  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, digite o valor do marcador.
  4. Se quiser adicionar outro rótulo, clique em Adicionar item. Em seguida, adicione o 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 aparecer, 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 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 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 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, 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 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

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 em 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 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 da CA atual e termina com o certificado da CA 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. 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 como ele tenta buscar a CSR, o que não é permitido após a ativação da CA.
  4. Atualize a configuração da AC subordinada com os seguintes campos 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