Importação de certificado SSL do WAF: conversão de formato JKS, PFX e PEM
O certificado que um cliente entrega quase nunca vem no formato que um WAF quer. O Tomcat exporta um keystore JKS, o IIS exporta um arquivo PFX, e o WAF quer uma simples chave pública, chave privada e cadeia de certificados. Aqui está a cadeia de conversão real, os comandos keytool e OpenSSL, e o que verificar antes que um upload que parecia correto se revele não ser.
Por Atlas Yuwen Zhang, fundador da AtlasCommTech — 18 anos em ICT, 13 deles em redes de operadoras · Atualizado em julho de 2026
Por que o mesmo certificado se recusa a fazer upload duas vezes
O certificado é real, não expirou, e mesmo assim não entra no WAF — porque o próprio arquivo está no formato errado.
A maioria das plataformas de servidor web não armazena certificados como uma simples chave pública, chave privada e cadeia. Apache e Nginx, construídos sobre OpenSSL, são os que mais se aproximam — já funcionam com arquivos do tipo CRT, KEY e CER. Tomcat, WebLogic e JBoss rodam em Java e armazenam tudo em um único arquivo Java Keystore (JKS) construído com o Keytool do JDK. O IIS da Microsoft usa o repositório de certificados do Windows e exporta como PFX. A configuração HTTPS de um WAF quer diretamente os arquivos estilo OpenSSL, então qualquer coisa que saia de um contêiner JKS ou PFX precisa ser convertida primeiro — e a cadeia precisa viajar junto, ou o site permanece inacessível mesmo com um certificado perfeitamente válido.
A seguir está a relação de conversão entre os três formatos, os comandos exatos para cada etapa, como gerar uma cadeia de certificados quando a do cliente está faltando, como distinguir um arquivo de chave pública de um arquivo de CA antes de fazer upload de qualquer um deles, e algumas respostas de perguntas frequentes tiradas de casos reais de campo.
Como os três formatos realmente se relacionam entre si
JKS, PFX e PEM/KEY/CRT não são três formatos sem relação — eles ficam em uma única cadeia de conversão, e todo upload de certificado de WAF acaba percorrendo-a a partir de uma ou outra extremidade.
Saber de qual extremidade você está partindo indica exatamente quantos saltos existem entre você e um upload que realmente funciona.
Os rótulos do diagrama permanecem em inglês para clareza técnica.
Tudo à esquerda de PEM/KEY/CRT precisa fazer o trajeto por este diagrama antes que um WAF o aceite. A cadeia de certificados é uma questão separada que viaja junto com o par de chave pública/privada, não um quarto formato na mesma cadeia — e é a peça mais frequentemente esquecida.
As etapas de conversão reais
Dois saltos, uma etapa de construção de cadeia se necessário, e uma verificação antes de mexer no formulário de upload.
Etapa 1 — De JKS para PFX (Keytool)
Se o certificado veio de um servidor Tomcat, WebLogic ou JBoss, ele está em um único arquivo JKS e precisa primeiro passar pelo Keytool.
- Localize o utilitário Keytool do JDK na máquina que contém o arquivo JKS — ele vem com qualquer instalação padrão do JDK.
- Execute o comando importkeystore, apontando-o para o arquivo JKS de origem e nomeando o arquivo PFX de destino, com o tipo de origem definido como JKS e o tipo de destino como PKCS12.
- O Keytool solicitará a senha do keystore; forneça a que o administrador do servidor do cliente usou quando o arquivo JKS foi criado.
keytool -importkeystore -srckeystore D:\server.jks -destkeystore D:\server.pfx -srcstoretype JKS -deststoretype PKCS12
Etapa 2 — De PFX para PEM / KEY / CRT (OpenSSL)
Seja o PFX vindo da Etapa 1 ou diretamente de um servidor IIS, esta é a etapa que produz os arquivos que o WAF realmente quer.
- Copie o arquivo PFX para o diretório de instalação do OpenSSL (ou garanta que o OpenSSL esteja acessível a partir de onde o arquivo está).
- Execute openssl pkcs12 para extrair tudo em um único arquivo PEM não criptografado — ele contém tanto a chave privada quanto o certificado.
- Execute openssl rsa nesse arquivo PEM para extrair apenas a chave privada como seu próprio arquivo KEY.
- Execute openssl x509 no mesmo arquivo PEM para extrair apenas o certificado público como seu próprio arquivo CRT.
openssl pkcs12 -in server.pfx -nodes -out server.pem
openssl rsa -in server.pem -out server.key
openssl x509 -in server.pem -out server.crt
Etapa 3 — Construir a cadeia de certificados (se estiver faltando)
Quando o certificado vem de uma CA intermediária em vez de uma autoridade raiz — o caso normal — a cadeia também precisa ser enviada, ou o site permanece inacessível para qualquer um cujo navegador ainda não confie nesse intermediário.
- Verifique se o cliente já forneceu um arquivo de cadeia junto com o certificado. Se forneceu e está intacto, pule direto para a Etapa 4.
- Se a cadeia estiver faltando ou tiver sido perdida, importe o certificado de CA do site em uma ferramenta on-line de download de cadeia como a página chain_download do myssl.com.
- Depois que o certificado de CA for importado, use a ferramenta para gerar a cadeia, depois baixe o arquivo de cadeia resultante para fazer upload junto com a chave pública e privada.
Etapa 4 — Verificar antes de fazer upload
Um arquivo que abre sem erro não é prova de que é o arquivo certo para o campo em que você está prestes a colocá-lo.
- Clique duas vezes em cada arquivo de certificado para abri-lo e verifique o caminho do certificado. Um nome de domínio no caminho significa que você está vendo a chave pública — o certificado folha realmente emitido para este site.
- Sem nome de domínio no caminho significa que é um certificado de CA — útil para a cadeia, mas não pertence ao campo de upload de chave pública.
- Faça upload da chave pública, chave privada e cadeia de certificados em seus campos correspondentes, habilite a descriptografia HTTPS/SSL no site protegido, e confirme que o site está acessível via HTTPS antes de considerar o trabalho concluído.
4 armadilhas que causam a maioria das falhas de upload de certificado
Os próprios comandos de conversão raramente falham — essas quatro coisas ao redor deles é que realmente quebram o upload.
1. JKS, PFX e PEM não são intercambiáveis — e o WAF só aceita um deles
SINTOMAUm certificado que funciona perfeitamente no servidor Tomcat ou IIS do cliente é rejeitado, ou simplesmente não faz upload, quando você tenta configurar o mesmo site HTTPS no WAF.
CAUSADiferentes plataformas de servidor web armazenam certificados em formatos diferentes por padrão: Apache/Nginx usam arquivos CRT/KEY baseados em OpenSSL, Tomcat/WebLogic/JBoss usam um Java Keystore (JKS) construído com o Keytool do JDK, e o IIS no Windows Server exporta como PFX. A configuração HTTPS/SSL do WAF quer a chave pública, chave privada e cadeia de certificados estilo OpenSSL — não um contêiner JKS ou PFX.
SOLUÇÃOConverta seguindo a cadeia padrão — JKS para PFX com Keytool, depois PFX para PEM/KEY/CRT com OpenSSL — em vez de tentar fazer upload do arquivo original do cliente como está.
2. Uma cadeia de certificados ausente quebra o site mesmo que o certificado seja válido
SINTOMAO site HTTPS está inacessível depois que o certificado é enviado, embora o próprio certificado esteja correto e não tenha expirado.
CAUSAQuando um certificado é emitido por uma CA intermediária em vez de diretamente por uma autoridade raiz — o caso normal — os clientes precisam da cadeia intermediária para construir um caminho de confiança até uma raiz em que já confiam. Se essa cadeia não for enviada junto com a chave pública e privada, o handshake falha para qualquer um cujo navegador ainda não tenha o intermediário em cache.
SOLUÇÃOFaça upload da cadeia de certificados que o cliente fornece. Se estiver faltando ou perdida, importe o certificado de CA do site em uma ferramenta on-line de download de cadeia como a página chain_download do myssl.com, gere a cadeia lá, e envie o resultado.
3. Uma chave pública e um certificado de CA parecem iguais até você realmente abri-los
SINTOMAUm upload de certificado parece bem-sucedido, mas o site ainda falha em servir HTTPS corretamente, ou o arquivo errado acaba no campo de upload errado.
CAUSAUm certificado folha (a chave pública do site) e um certificado de CA podem ser ambos arquivos .crt/.cer comuns com nomes semelhantes, e não há uma forma confiável de distingui-los apenas pelo nome do arquivo.
SOLUÇÃOClique duas vezes no arquivo de certificado antes de fazer upload e verifique o caminho do certificado. Um nome de domínio no caminho significa que é a chave pública; sem nome de domínio significa que é um certificado de CA — envie cada um para o campo que corresponde ao que ele realmente é, não ao que seu nome de arquivo sugere.
4. HTTP funciona, HTTPS não — e o certificado nem sempre é o motivo
SINTOMAO mesmo site funciona bem por HTTP, mas o acesso HTTPS falha para alguns ou todos os clientes depois que o certificado já foi enviado.
CAUSADepois de confirmar que o HTTP funciona, a falha está em algum lugar no próprio handshake TLS, e geralmente é uma de quatro coisas: uma versão SSL/TLS em que o cliente está preso e que o WAF não suporta (SSLv2/SSLv3/TLS 1.0), um conjunto de cifras que o WAF desabilita por padrão, uma chave pública, privada ou cadeia que na verdade não corresponde ao servidor de origem, ou um cliente apresentando autenticação TLS mútua (bidirecional) como um UKey — que essa classe de WAF não consegue proxyar de forma alguma.
SOLUÇÃOPercorra os quatro em ordem: verifique primeiro a versão de protocolo negociada pelo cliente, depois o suporte a conjunto de cifras, depois reverifique se a chave/cadeia enviada realmente corresponde à origem, e finalmente descarte clientes de autenticação mútua — que precisam contornar o WAF em vez de serem proxyados através dele.
Projetos de soluções relacionadas
Cinco perguntas que surgem constantemente
Tiradas diretamente do campo — aquelas para as quais vale a pena ter uma resposta pronta.
Qual software de servidor web usa qual formato de certificado?
Apache e Nginx normalmente usam as próprias ferramentas do OpenSSL, produzindo diretamente arquivos do tipo CRT, KEY e CER. Tomcat, WebLogic e JBoss passam pelo Keytool do Java, parte do JDK, e armazenam tudo em um único arquivo Java Keystore (JKS). O IIS da Microsoft usa o repositório de certificados do Windows e exporta como PFX. Um WAF precisa da chave pública, chave privada e cadeia estilo OpenSSL — então qualquer coisa que saia de um arquivo JKS ou PFX precisa ser convertida primeiro.
Qual é a cadeia de comandos real de um arquivo JKS do Tomcat até o que o WAF precisa?
Dois saltos. Primeiro, o Keytool converte JKS para PFX: keytool -importkeystore -srckeystore server.jks -destkeystore server.pfx -srcstoretype JKS -deststoretype PKCS12. Depois, o OpenSSL divide o PFX nos arquivos PEM/KEY/CRT que o WAF realmente quer: openssl pkcs12 -in server.pfx -nodes -out server.pem, seguido de openssl rsa -in server.pem -out server.key e openssl x509 -in server.pem -out server.crt.
Meu certificado veio de uma CA intermediária, não da raiz — isso muda alguma coisa?
Sim — você precisa fazer upload da cadeia de certificados junto com a chave pública e privada, ou o site fica inacessível mesmo que o certificado folha em si seja completamente válido. Se o cliente não forneceu um arquivo de cadeia, ou ele foi perdido, importar o certificado de CA do site na ferramenta de download de cadeia do myssl.com e gerar a cadeia a partir daí é a solução padrão.
Como sei se um arquivo é a chave pública do meu site ou apenas um certificado de CA antes de fazer upload dele?
Clique duas vezes no arquivo de certificado para abri-lo e verifique o caminho do certificado. Se um nome de domínio aparecer na cadeia, você está vendo a chave pública — o certificado folha emitido para o seu site. Se não houver nome de domínio, é um certificado de CA — útil para construir a cadeia, mas não algo que você deva enviar para o campo de chave pública.
Fiz upload do certificado e o HTTP funciona, mas o HTTPS ainda não — por onde eu começo?
Quatro suspeitos habituais, aproximadamente nesta ordem: uma versão de protocolo SSL/TLS não suportada no cliente (SSLv2, SSLv3, TLS 1.0); um conjunto de cifras que o WAF desabilita por padrão por motivos de segurança, que você pode habilitar ao custo de parte dessa segurança; uma chave pública, privada ou cadeia que simplesmente não corresponde ao que o servidor de origem realmente usa; ou um cliente fazendo autenticação TLS mútua (bidirecional) com algo como um UKey — que essa classe de WAF não suporta proxyar de forma alguma.
Limites honestos desta nota
Esta nota se baseia nos requisitos de certificado do WAF Huawei — uma chave pública, chave privada e cadeia de certificados em formato PEM/KEY/CRT estilo OpenSSL — e nos comandos Keytool / OpenSSL usados para chegar lá a partir de JKS ou PFX, além dos casos de campo por trás deles. Se o seu WAF for de outro fabricante, os campos de upload exatos podem diferir, mas a cadeia de conversão subjacente — JKS através de PFX até PEM/KEY/CRT — e as verificações de cadeia de certificados e chave pública versus CA se aplicam diretamente. Não cobre a autenticação de certificado de cliente TLS mútua (bidirecional), que a maioria dos appliances de WAF não suporta proxyar de forma alguma.
Travado convertendo um certificado para o seu WAF?
Conte-nos de qual formato você está partindo — JKS, PFX, ou outro — e onde a cadeia quebra, e ajudamos você a interpretá-la.