Criar uma AC subordinada por 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. Qualquer carga de trabalho que usa a AC subordinada confia imediatamente na AC subordinada confia na CA raiz externa. É possível usar a AC 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 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 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 é 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: o segundo a etapa é enviar a CSR para a AC raiz externa para assinatura. Certifique-se de siga as instruções específicas da CA raiz externa para enviar CSRs e a obtenção de 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 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 a duração desejada 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 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 Next.
. 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), digite a empresa subdivisão ou 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, 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 Next.
. 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 Next.
. Configurar artefatos de AC

As etapas a seguir são opcionais. Se você pular essas etapas, o padrão se aplicam.

  1. Escolha entre usar uma conta gerenciada pelo Google do bucket do Cloud Storage.
  2. Se você não selecionar um bucket autogerenciado do Cloud Storage, O CA Service cria um bucket gerenciado pelo Google no mesmo local 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 Next.
. 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 marcador, 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 Next.
. 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 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 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, 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. A página 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 CA 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 Next.

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