Chaves públicas e privadas formam um par de chaves matematicamente vinculado, gerado por um algoritmo de criptografia assimétrica. Em conjunto com um certificado SSL/TLS, elas permitem a comunicação segura entre cliente e servidor: a chave pública criptografa dados e verifica assinaturas, enquanto a chave privada descriptografa dados e cria assinaturas.
Este tópico explica o funcionamento dessas chaves no protocolo SSL/TLS e demonstra como gerar uma chave privada e uma Certificate Signing Request (CSR) usando OpenSSL ou keytool.
Conceitos principais
Chave pública e chave privada
Uma chave pública e uma chave privada são sempre geradas como um par inseparável:
Chave pública — compartilhada publicamente. Criptografa os dados enviados ao proprietário da chave e verifica as assinaturas criadas pela chave privada.
Chave privada — mantida em sigilo absoluto. Descriptografa os dados criptografados pela chave pública e gera assinaturas digitais que comprovam a identidade do remetente.
Manter a segurança da chave privada é fundamental. Se ela for comprometida, todas as comunicações criptografadas ficarão vulneráveis e o certificado associado se tornará inutilizável.
Para obter detalhes sobre como o Certificate Management Service protege as chaves privadas, consulte How does Certificate Management Service protect private keys?.
Como funciona
O SSL/TLS estabelece um canal seguro em cinco etapas. As etapas 1 a 3 usam criptografia assimétrica (chave pública/privada); as etapas 4 e 5 passam a usar criptografia simétrica, mais rápida, por meio de uma chave de sessão.
Apresentação do certificado — o servidor envia seu certificado SSL ao cliente. Esse certificado contém a chave pública do servidor, informações de identidade (nome de domínio), a assinatura digital de uma autoridade certificadora (CA) e o período de validade do certificado.
-
Verificação do certificado (lado do cliente) — o cliente valida a cadeia de certificados na seguinte ordem: certificado do servidor → certificado intermediário → certificado raiz. A cadeia é considerada confiável se remontar a um certificado raiz presente no repositório de confiança local do cliente. Além disso, o cliente verifica o período de validade e confirma se o nome de domínio corresponde ao endpoint acessado.
NotaEsse processo depende do repositório de certificados raiz pré-instalado no sistema operacional ou navegador do cliente.
-
Comprovação da chave privada — o servidor comprova que possui a chave privada correspondente ao certificado. O mecanismo varia conforme o método de troca de chaves utilizado:
Troca de chaves
Como o servidor comprova a posse da chave privada
RSA
Descriptografa o pre-master secret enviado pelo cliente
DH/ECDH
Assina a mensagem
ServerKeyExchangeTLS 1.3
Assina a mensagem
CertificateVerify Negociação da chave de sessão — ambas as partes derivam uma chave de sessão idêntica a partir das informações trocadas.
Comunicação criptografada — todos os dados subsequentes são criptografados com a chave de sessão mediante criptografia simétrica, unindo eficiência e segurança.
Gerar uma chave privada
O Certificate Management Service exige que as chaves privadas usem o algoritmo RSA com comprimento mínimo de 2048 bits.
Se você adquirir um certificado pelo Certificate Management Service com a opção CSR Generation definida como Automatic, o próprio service gerará o par de chaves em seu nome. Nesse caso, pule a geração da chave e a criação da CSR.
Gerar uma nova chave privada
-
Instale o OpenSSL. Baixe o pacote de instalação no site do OpenSSL. Use uma versão estável e oficialmente suportada — 1.1.1 ou 3.x. Para verificar a versão atual instalada:
openssl version -
Gere o arquivo da chave privada. Os comandos abaixo criam uma chave privada RSA formatada em Privacy-Enhanced Mail (PEM), chamada
myprivate.pem. Execute um dos comandos conforme seus requisitos de segurança:# 2048-bit key (minimum requirement) openssl genrsa -out myprivate.pem 2048 # 4096-bit key (stronger security) openssl genrsa -out myprivate.pem 4096 # 4096-bit key with AES-256 password protection (recommended for high-security environments) openssl genrsa -aes256 -out myprivate.pem 4096
Exportar uma chave privada de um Java Keystore (JKS)
Use este método quando tiver um par de chaves em um arquivo .jks (criado com keytool) e precisar exportá-lo no formato PEM — por exemplo, para configurar Nginx, Apache ou uma CDN.
Usar a ferramenta de conversão de formato do Certificate Management Service
O Certificate Management Service oferece uma ferramenta online gratuita que converte um keystore JKS em arquivos de chave e certificado no formato PEM em uma única etapa. Consulte Convert the format of a certificate.
Usar a CLI do OpenSSL
-
Converta o JKS para o formato PKCS12. A CLI
keytoolnão exporta chaves privadas diretamente para PEM. Primeiro, converta o JKS para o formato PKCS12 (.p12), que é mais portátil. Substituamydomainpelo alias real:keytool -importkeystore \ -srckeystore mydomain.jks \ -destkeystore mydomain.p12 \ -deststoretype PKCS12 \ -srcalias mydomain \ -destalias mydomainO sistema solicitará a senha do JKS de origem e uma nova senha para o arquivo
.p12. -
Extraia a chave privada no formato PEM. Use o OpenSSL para extrair a chave privada do arquivo
.p12. Será solicitada a senha do arquivo.p12definida na etapa anterior:-nodes— não criptografa a chave privada de saída-nocerts— gera apenas a chave privada, sem o certificado
# Standard command openssl pkcs12 -in mydomain.p12 -nodes -nocerts -out myprivate.pem # If you get an "unsupported algorithm" error in OpenSSL 3.x, add -legacy # Note: -legacy enables deprecated encryption algorithms openssl pkcs12 -in mydomain.p12 -nodes -nocerts -out myprivate.pem -legacyFlags:
O arquivo myprivate.pem resultante é o necessário para a configuração do certificado.
Formatos de arquivo de chave privada
Um arquivo de chave privada PEM apresenta-se em um dos dois formatos abaixo:
PKCS#1
(Específico para RSA, definido pelo padrão de criptografia RSA)
-----BEGIN RSA PRIVATE KEY-----
(Base64-encoded key content)
-----END RSA PRIVATE KEY-----
PKCS#8
(Independente de algoritmo, compatível com RSA, ECC e outros algoritmos de chave privada)
-----BEGIN PRIVATE KEY-----
(Base64-encoded key content)
-----END PRIVATE KEY-----
Armazene o arquivo da chave privada com segurança. Em caso de perda ou comprometimento, o certificado associado se tornará inutilizável e quaisquer dados criptografados com a chave pública correspondente ficarão vulneráveis.
Crie uma Certificate Signing Request (CSR)
A CSR agrupa sua chave pública e informações de identidade para envio a uma CA. Para enviar uma CSR manualmente no Certificate Management Service:
-
Gere o arquivo CSR usando sua chave privada.
# -key myprivate.pem Specifies the private key file generated earlier # -out mydomain.csr Specifies the output CSR filename openssl req -new -key myprivate.pem -out mydomain.csrO comando solicita: país, estado ou província, cidade, organização e Common Name. O Common Name deve corresponder exatamente ao nome de domínio do certificado — por exemplo,
www.aliyun.com. -
Envie a CSR no Certificate Management Service. Ao comprar, criar ou solicitar um certificado, defina CSR Generation como Manual e cole o conteúdo de
mydomain.csr. Para mais detalhes, consulte:
Próximos passos
Saiba como o Certificate Management Service protege suas chaves privadas: How does Certificate Management Service protect private keys?.
Converta um certificado existente para outro formato: Convert the format of a certificate.