Criar uma AC subordinada de uma AC externa
Nesta página, descrevemos como criar uma autoridade certificadora (AC) subordinada que é encadeada a uma AC raiz externa.
Se você tiver uma hierarquia de infraestrutura de chave pública (PKI) que contenha uma AC raiz e ACs subordinadas, poderá manter a mesma AC raiz e criar uma AC subordinada no serviço de AC que seja encadeada à sua AC 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 de AC subordinada para Google Cloud. A AC subordinada é confiável imediatamente por qualquer carga de trabalho que confie na AC raiz externa. Em seguida, é possível usar a AC subordinada para emitir certificados sem precisar acessar a AC raiz externa no ambiente de execução.
Antes de começar
- Verifique se você tem o papel do IAM de Gerente de operações do serviço de AC (
roles/privateca.caManager) ou de Administrador do serviço de AC (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 da AC subordinada. Para mais informações, consulte Determinar as configurações da AC.
Criar uma AC subordinada de uma AC externa
A criação de uma AC subordinada de uma AC externa envolve as seguintes etapas:
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.
Obter o certificado de AC subordinada assinado pela AC raiz externa: a segunda etapa é enviar a CSR à AC raiz externa para assinatura. Siga as instruções específicas da AC raiz externa para enviar CSRs e receber certificados assinados.
Importar o certificado de CA subordinada assinado para o serviço de AC: a etapa final é fazer o upload da cadeia de certificados PEM assinada usando a Google Cloud CLI ou o Google Cloud console.
A seção a seguir mostra como criar uma AC subordinada de uma AC raiz externa.
Criar uma CSR
Console
Noconsole, acesse a página Serviço de autoridade certificadora. Google Cloud
Clique na guia Gerenciador de CA.
Clique em Criar CA.
Selecionar o tipo de CA:
- Clique em CA subordinada.
- No campo Válido por, insira a duração da validade dos certificados emitidos pela AC subordinada.
- Clique em A CA raiz é externa.
- Selecione uma das opções disponíveis para o nível da CA. Para mais informações, consulte Selecionar os níveis de operação .
- Em Regionalização, selecione um local da CA na lista.
- Clique em Próxima.
- No campo Organização (O), insira o nome da sua empresa.
- Opcional: no campo Unidade organizacional (OU), insira a subdivisão da empresa ou a unidade de negócios.
- Opcional: no campo Nome do país (C), insira um código de país de duas letras.
- Opcional: no campo Nome do estado ou província, insira o nome do seu estado.
- Opcional: no campo Nome da localidade, insira o nome da sua cidade.
- No campo Nome comum da CA (CN), insira o nome da CA.
- Clique em Continuar.
- Escolha o algoritmo de chave que melhor atenda às suas necessidades. Para mais detalhes sobre as opções de chave de assinatura, consulte Configurar chaves de assinatura de CA.
- Para usar uma chave de assinatura gerenciada pelo cliente, selecione Chave gerenciada pelo cliente e forneça a versão da chave criptográfica do Cloud Key Management Service.
- Clique em Continuar.
- Escolha se você quer usar um bucket do Cloud Storage gerenciado pelo Google ou pelo cliente.
- Para um bucket do Cloud Storage gerenciado pelo Google, o serviço de AC cria um bucket gerenciado pelo Google no mesmo local da AC.
- Para um bucket do Cloud Storage gerenciado pelo cliente, clique em "Procurar" e selecione um dos buckets do Cloud Storage atuais.
- Clique em Continuar.
As etapas a seguir são opcionais.
Se você quiser adicionar rótulos à AC, faça o seguinte:
- Clique em Adicionar item.
- No campo Chave 1, insira a chave do rótulo.
- No campo Valor 1, insira o valor do rótulo.
- 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.
- Clique em Continuar.
Analise todas as configurações com atenção e clique em Concluído para criar a AC.
Fazer o download da CSR
- Na página Autoridade certificadora, selecione a AC que você quer ativar.
- Clique em Ativar.
Na caixa de diálogo exibida, clique em Fazer o download da CSR.
gcloud
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 --location=LOCATIONSubstitua:
- SUBORDINATE_POOL_ID: o nome do pool de ACs.
- LOCATION: o local do pool de ACs.
Para criar uma AC subordinada no pool de ACs criado, execute o seguinte comando
gcloud. O comandogcloudtambém cria uma CSR e a salva no arquivo FILE_NAME.gcloud privateca subordinates create SUBORDINATE_CA_ID \ --pool=SUBORDINATE_POOL_ID \ --location=LOCATION \ --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.
- LOCATION: o local do pool de ACs.
- FILE_NAME: o nome do arquivo em que a CSR codificada por PEM é gravada.
A flag
--key-algorithmespecifica o algoritmo criptográfico que você quer usar para criar uma chave gerenciada do Cloud HSM para a AC.A flag
--subjectespecifica o nome X.501 do assunto do certificado.Para mais informações sobre o
gcloud privateca subordinates createcomando, consulte gcloud privateca subordinates create.Para criar uma AC subordinada usando uma chave de assinatura gerenciada pelo cliente, execute o seguinte comando:
gcloud privateca subordinates create SUBORDINATE_CA_ID \ --pool=SUBORDINATE_POOL_ID \ --location=LOCATION \ --create-csr --csr-output-file=FILE_NAME \ --kms-key-version=KMS_KEY_VERSION \ --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.
- LOCATION: o local do pool de ACs.
- FILE_NAME: o nome do arquivo em que a CSR codificada por PEM é gravada.
- KMS_KEY_VERSION: o ID de recurso completo de uma versão de chave criptográfica do Cloud KMS gerenciada pelo cliente a ser usada como chave de assinatura.
Para mais detalhes sobre as opções de chave de assinatura e como preparar uma chave de assinatura gerenciada pelo cliente, consulte Configurar chaves de assinatura de CA.
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 conferir 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 \
--location=LOCATION
Terraform
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" }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 }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.
É possível fazer testes com uma AC raiz simples usando os seguintes comandos openssl:
Shell
Configure as definiçõ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 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
Concatene toda a cadeia de certificados em um único arquivo.
cat subordinate.crt > chain.crt
cat rootCA.crt >> chain.crt
Fazer o upload do certificado assinado
Para ativar uma AC subordinada usando um certificado assinado, faça o seguinte:
Console
Acesse a página Certificate Authority Service no Google Cloud console.
Clique na guia Gerenciador de CA.
Em Autoridades de certificação, escolha a AC subordinada que você criou.
Clique em Ativar.
Na caixa de diálogo exibida, clique em Fazer o download da CSR para fazer o download do arquivo CSR codificado por PEM que a AC emissora pode assinar.
Clique em Próxima.
No campo Fazer o upload da cadeia de certificados, clique em Procurar.
Faça o upload do arquivo de certificado assinado com a extensão
.crt.Clique em Ativar.
gcloud
gcloud privateca subordinates activate SUBORDINATE_CA_ID \
--pool=SUBORDINATE_POOL_ID \
--location=LOCATION \
--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.
- LOCATION: o local do pool de ACs. Para conferir a lista completa de locais, consulte Locais.
A flag --pem-chain é obrigatória. Essa flag especifica um arquivo que contém a lista de certificados codificados por 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 subordinates activate.
A instrução a seguir é retornada quando o certificado assinado é enviado:
Activated certificate authority [SUBORDINATE_CA_ID].
Terraform
- Salve o certificado de AC assinado localmente como
subordinate.crt. - Salve os certificados de AC do signatário localmente como
rootCA.crt. - Remova a configuração para buscar a CSR mencionada na primeira etapa, porque ela tenta buscar a CSR, o que não é permitido após a ativação da AC.
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 AC, especifique o valor como
[file("intermediateCA.cert"), file("rootCA.crt")].
A seguir
- Saiba como solicitar certificados.
- Saiba mais sobre modelos e políticas de emissão.