Criar uma AC subordinada a partir de uma AC externa

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

Se você já tiver uma hierarquia de infraestrutura de chave pública (ICP) contendo um CA raiz e CAs subordinadas, é possível manter a mesma CA raiz e criar uma AC subordinada em serviço de AC encadeada para o ambiente AC raiz. 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 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 CA Service Operation Manager (roles/privateca.caManager) ou o administrador de serviço de CA (roles/privateca.admin) papel do IAM. 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 AC.

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 AC subordinada e, em seguida, fazer o download da CSR.

  2. Receber o certificado da AC subordinada assinado pela AC raiz externa: a segunda 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. Importar o certificado de AC subordinado assinado para o serviço de 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 Gerente de CAs.

  3. Clique em Criar CA.

Selecionar 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 AC
  1. No campo Organização (O), insira o nome da sua empresa.
  2. Opcional: no campo Unidade organizacional (UO), digite a empresa subdivisão ou 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, digite o nome da 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 a criação da AC.
  8. Clique em Próxima.
Configurar o algoritmo e o tamanho da chave da AC
  1. Escolha o algoritmo de chave que melhor atende à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 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 cria um bucket gerenciado pelo Google no mesmo como a CA.

  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. Publicação da CRL e do certificado de CA em um bucket do Cloud Storage é ativado 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, digite 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 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 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 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 AC 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 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 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, 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 solicitar que assinem o certificado. As etapas específicas dependem da configuração da sua organização.

É possível testar uma CA raiz simples usando o 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 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 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 fazer o download do Arquivo CSR codificado em 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 do 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 seguinte instrução é 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 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