O Alibaba Cloud CDN aceita certificados e chaves privadas exclusivamente no formato PEM. Este tópico descreve os requisitos de formato para cada tipo de certificado e como converter certificados DER, P7B (PKCS#7) e PFX (PKCS#12) para PEM.
Antes do upload
Antes de fazer o upload, verifique se o certificado e a chave privada atendem a todos os requisitos abaixo:
|
Requisito |
Detalhes |
|
Formato |
Codificação PEM |
|
Comprimento da linha |
Cada linha, exceto a última, contém exatamente 64 caracteres |
|
Sem espaços |
Nenhum caractere de espaço entre os marcadores |
|
Ordem da cadeia de certificados |
Certificado do servidor primeiro, seguido pelos certificados intermediários (apenas CA intermediária) |
Certificados de uma CA raiz
Certificados de CA raiz são compatíveis com servidores web como Apache, IIS, NGINX e Tomcat. Os certificados SSL usados pelo CDN seguem o formato compatível com NGINX. O arquivo de certificado tem a extensão .crt e o arquivo de chave privada tem a extensão .key.
Abra o arquivo .crt em um editor de texto para visualizar o conteúdo do certificado.
O certificado deve seguir esta estrutura:
Iniciar com
-----BEGIN CERTIFICATE-----Terminar com
-----END CERTIFICATE-----Cada linha, exceto a última, contém exatamente 64 caracteres; a última linha pode ter 64 caracteres ou menos
Faça o upload de todo o conteúdo, desde -----BEGIN CERTIFICATE----- até -----END CERTIFICATE-----.
Certificados de uma CA intermediária
Se o certificado for emitido por uma CA intermediária, faça o upload da cadeia completa: o certificado do servidor e todos os certificados intermediários combinados em um único arquivo.
-----BEGIN CERTIFICATE-----
(server certificate content)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(intermediate certificate content)
-----END CERTIFICATE-----
O certificado do servidor deve vir primeiro, seguido pelos certificados intermediários. Não adicione caracteres de espaço entre os certificados. Todos os certificados devem estar no formato PEM.
Para montar a cadeia, abra cada arquivo .pem em um editor de texto e cole o conteúdo na ordem correta: primeiro o bloco do certificado do servidor, depois cada bloco de certificado intermediário imediatamente após, sem espaços entre eles.
Formato de chave privada RSA
O arquivo de chave privada tem a extensão .pem ou .key. Abra-o em um editor de texto para visualizar seu conteúdo.
Uma chave privada RSA válida deve:
Começar com
-----BEGIN RSA PRIVATE KEY-----Terminar com
-----END RSA PRIVATE KEY-----Ter cada linha (exceto a última) com exatamente 64 caracteres
Gerar uma nova chave privada RSA
Execute o comando a seguir para gerar uma chave privada RSA de 2048 bits. A saída será salva em privateKey.pem.
openssl genrsa -out privateKey.pem 2048
Converter uma chave privada que começa com -----BEGIN PRIVATE KEY-----
Se sua chave privada começar com -----BEGIN PRIVATE KEY----- em vez de -----BEGIN RSA PRIVATE KEY-----, converta-a com o OpenSSL antes de fazer o upload:
openssl rsa -in old_server_key.pem -out new_server_key.pem
Faça o upload do conteúdo de new_server_key.pem junto com o certificado.
Requisitos de comprimento da chave
O intervalo de comprimento de chave privada RSA compatível com o CDN é o seguinte:
Chaves RSA menores que 2048 bits (como 1024 bits) são consideradas inseguras e podem ser rejeitadas pela validação do backend.
-
Use 2048 bits ou 4096 bits. Gere uma chave com:
openssl genrsa -out privateKey.pem 2048Ou substitua
2048por4096. O CDN também oferece suporte a certificados ECC (Elliptic Curve Cryptography). Os tipos de curva ECC comuns incluem prime256v1 (secp256r1) e secp384r1. Gere uma chave privada ECC com:
openssl ecparam -genkey -name prime256v1 -out ecc_key.pem
O comprimento máximo exato da chave e o suporte a curvas ECC dependem da validação da API de backend do CDN. Se você encontrar erros de formato relacionados à chave durante o upload, tente regenerá-la usando uma chave RSA padrão de 2048 bits ou uma chave ECC prime256v1.
Converter formatos de certificado
O CDN aceita apenas certificados no formato PEM. Use o OpenSSL para converter a partir de outros formatos.
Um arquivo.crtpode estar no formato PEM ou DER (Distinguished Encoding Rules). Abra-o em um editor de texto. Se você visualizar-----BEGIN CERTIFICATE-----, ele já está no formato PEM e nenhuma conversão é necessária. O PEM é um formato de texto codificado em Base64; arquivos de chave privada no formato PEM usam a extensão.key.
DER para PEM
O formato DER é comum em plataformas Java.
Converta o certificado:
openssl x509 -inform der -in certificate.cer -out certificate.pem
Converta a chave privada:
openssl rsa -inform DER -outform pem -in privatekey.der -out privatekey.pem
P7B (PKCS#7) para PEM
O formato P7B é frequente no Windows Server e no Tomcat.
Converta o certificado:
openssl pkcs7 -print_certs -in incertificat.p7b -out outcertificate.cer
Abra o arquivo outcertificate.cer e copie o bloco de -----BEGIN CERTIFICATE----- até -----END CERTIFICATE-----. Faça o upload apenas desse bloco.
Arquivos P7B não contêm chave privada. Ao configurar o certificado SSL no console do CDN, insira apenas o conteúdo do certificado e deixe o campo de chave privada em branco.
PFX (PKCS#12) para PEM
O formato PFX é amplamente usado no Windows Server.
Converta o certificado:
openssl pkcs12 -in certname.pfx -nokeys -out cert.pem
Converta a chave privada:
openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes
Suporte a algoritmos de assinatura
Os algoritmos de assinatura compatíveis com o CDN dependem das regras de validação da API de backend. Veja abaixo uma referência de compatibilidade para algoritmos de assinatura comuns:
-
Algoritmos de assinatura recomendados:
SHA-256 com RSA (sha256WithRSAEncryption)
SHA-384 com RSA
SHA-512 com RSA
ECDSA com SHA-256 (para certificados ECC)
-
Não recomendados:
SHA-1 com RSA: O SHA-1 foi marcado como inseguro pelos principais navegadores, e algumas validações de backend podem rejeitar certificados assinados com SHA-1.
O console do CDN não valida o algoritmo de assinatura no frontend. A compatibilidade do algoritmo de assinatura é determinada inteiramente pela API de backend. Se você receber um erro ao fazer upload de um certificado que usa um algoritmo de assinatura incomum, reemita o certificado usando SHA-256 com RSA ou um algoritmo mais seguro.
Verifique o algoritmo de assinatura do seu certificado com:
openssl x509 -in your_cert.pem -noout -text | grep "Signature Algorithm"
A saída deve ser semelhante a Signature Algorithm: sha256WithRSAEncryption.