El certificado que entrega un cliente casi nunca viene en el formato que quiere un WAF. Tomcat exporta un keystore JKS, IIS exporta un archivo PFX, y el WAF quiere una simple clave pública, clave privada y cadena de certificados. Aquí está la cadena de conversión real, los comandos keytool y OpenSSL, y qué revisar antes de que una carga que parecía correcta resulte no serlo.
Por Yuwen Zhang (Atlas), fundador de AtlasCommTech — 13 años de despliegues de redes de operadores y empresariales · Actualizado en julio de 2026
El certificado es real, no ha expirado, y aun así no entra en el WAF — porque el archivo en sí tiene la forma equivocada.
La mayoría de las plataformas de servidor web no almacenan los certificados como una simple clave pública, clave privada y cadena. Apache y Nginx, construidos sobre OpenSSL, son los que más se acercan — ya funcionan con archivos de tipo CRT, KEY y CER. Tomcat, WebLogic y JBoss corren sobre Java y guardan todo en un único archivo Java Keystore (JKS) construido con el Keytool del JDK. IIS de Microsoft usa el almacén de certificados de Windows y exporta como PFX. La configuración HTTPS de un WAF quiere directamente los archivos estilo OpenSSL, así que cualquier cosa que salga de un contenedor JKS o PFX debe convertirse primero — y la cadena debe viajar con ella, o el sitio seguirá inalcanzable incluso con un certificado perfectamente válido.
A continuación, la relación de conversión entre los tres formatos, los comandos exactos para cada paso, cómo generar una cadena de certificados cuando falta la del cliente, cómo distinguir un archivo de clave pública de un archivo de CA antes de cargar cualquiera de los dos, y algunas respuestas de preguntas frecuentes extraídas de casos reales de campo.
JKS, PFX y PEM/KEY/CRT no son tres formatos sin relación — se sitúan en una única cadena de conversión, y toda carga de certificado de WAF termina recorriéndola desde un extremo u otro.
Saber de qué extremo se parte le indica exactamente cuántos saltos hay entre usted y una carga que realmente funcione.
Las etiquetas del diagrama se mantienen en inglés por claridad técnica.
Todo lo que está a la izquierda de PEM/KEY/CRT tiene que hacer el recorrido por este diagrama antes de que un WAF lo acepte. La cadena de certificados es un asunto aparte que viaja junto al par de clave pública/privada, no un cuarto formato en la misma cadena — y es la pieza que más a menudo se olvida.
Dos saltos, un paso de construcción de cadena si lo necesita, y una pasada de verificación antes de tocar el formulario de carga.
Si el certificado proviene de un servidor Tomcat, WebLogic o JBoss, está en un único archivo JKS y necesita primero un paso por Keytool.
keytool -importkeystore -srckeystore D:\server.jks -destkeystore D:\server.pfx -srcstoretype JKS -deststoretype PKCS12
Ya sea que el PFX venga del Paso 1 o directamente de un servidor IIS, este es el paso que produce los archivos que el WAF realmente quiere.
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
Cuando el certificado proviene de una CA intermedia en lugar de una autoridad raíz — el caso normal — la cadena también debe cargarse, o el sitio seguirá inalcanzable para cualquiera cuyo navegador no confíe ya en ese intermediario.
Un archivo que se abre sin error no es prueba de que sea el archivo correcto para el campo en el que está a punto de colocarlo.
Los comandos de conversión en sí rara vez fallan — estas cuatro cosas a su alrededor son las que realmente rompen la carga.
SÍNTOMAUn certificado que funciona perfectamente en el servidor Tomcat o IIS del cliente es rechazado, o simplemente no se carga, cuando intenta configurar el mismo sitio HTTPS en el WAF.
CAUSADiferentes plataformas de servidor web almacenan certificados en formatos distintos por defecto: Apache/Nginx usan archivos CRT/KEY basados en OpenSSL, Tomcat/WebLogic/JBoss usan un Java Keystore (JKS) construido con el Keytool del JDK, e IIS en Windows Server exporta como PFX. La configuración HTTPS/SSL del WAF quiere la clave pública, clave privada y cadena de certificados estilo OpenSSL — no un contenedor JKS o PFX.
SOLUCIÓNConvierta siguiendo la cadena estándar — JKS a PFX con Keytool, luego PFX a PEM/KEY/CRT con OpenSSL — en lugar de intentar cargar el archivo original del cliente tal cual.
SÍNTOMAEl sitio HTTPS es inalcanzable después de cargar el certificado, aunque el certificado en sí sea correcto y no haya expirado.
CAUSACuando un certificado es emitido por una CA intermedia en lugar de directamente por una autoridad raíz — el caso normal — los clientes necesitan la cadena intermedia para construir una ruta de confianza hasta una raíz en la que ya confían. Si esa cadena no se carga junto con la clave pública y privada, el protocolo de enlace falla para cualquiera cuyo navegador no tenga ya el intermediario en caché.
SOLUCIÓNCargue la cadena de certificados que proporciona el cliente. Si falta o se perdió, importe el certificado de CA del sitio en una herramienta en línea de descarga de cadena como la página chain_download de myssl.com, genere la cadena allí, y cargue el resultado.
SÍNTOMAUna carga de certificado parece exitosa, pero el sitio sigue sin servir HTTPS correctamente, o el archivo equivocado termina en el campo de carga equivocado.
CAUSAUn certificado hoja (la clave pública del sitio) y un certificado de CA pueden ser ambos archivos .crt/.cer ordinarios con nombres similares, y no hay una forma confiable de distinguirlos solo por el nombre del archivo.
SOLUCIÓNHaga doble clic en el archivo de certificado antes de cargarlo y revise la ruta del certificado. Un nombre de dominio en la ruta significa que es la clave pública; sin nombre de dominio significa que es un certificado de CA — cargue cada uno en el campo que coincida con lo que realmente es, no con lo que su nombre de archivo sugiere.
SÍNTOMAEl mismo sitio funciona bien por HTTP, pero el acceso HTTPS falla para algunos o todos los clientes después de que el certificado ya fue cargado.
CAUSAUna vez confirmado que HTTP funciona, la falla está en algún lugar del propio protocolo de enlace TLS, y suele ser una de cuatro cosas: una versión SSL/TLS en la que el cliente está atascado y que el WAF no admite (SSLv2/SSLv3/TLS 1.0), un conjunto de cifrado que el WAF deshabilita por defecto, una clave pública, privada o cadena que en realidad no coincide con el servidor de origen, o un cliente que presenta autenticación TLS mutua (bidireccional) como un UKey — algo que este tipo de WAF no puede proxear en absoluto.
SOLUCIÓNRecorra las cuatro en orden: primero revise la versión de protocolo negociada por el cliente, luego el soporte del conjunto de cifrado, luego vuelva a verificar que la clave/cadena cargada realmente coincida con el origen, y finalmente descarte los clientes de autenticación mutua — que necesitan evitar el WAF en lugar de ser proxeados a través de él.
Sacadas directamente del terreno — las que vale la pena tener una respuesta lista.
Apache y Nginx normalmente usan las propias herramientas de OpenSSL, produciendo directamente archivos de tipo CRT, KEY y CER. Tomcat, WebLogic y JBoss pasan por el Keytool de Java, parte del JDK, y almacenan todo en un único archivo Java Keystore (JKS). El IIS de Microsoft usa el almacén de certificados de Windows y exporta como PFX. Un WAF necesita la clave pública, clave privada y cadena estilo OpenSSL — así que cualquier cosa que salga de un archivo JKS o PFX debe convertirse primero.
Dos saltos. Primero, Keytool convierte JKS a PFX: keytool -importkeystore -srckeystore server.jks -destkeystore server.pfx -srcstoretype JKS -deststoretype PKCS12. Luego, OpenSSL divide el PFX en los archivos PEM/KEY/CRT que el WAF realmente quiere: openssl pkcs12 -in server.pfx -nodes -out server.pem, seguido de openssl rsa -in server.pem -out server.key y openssl x509 -in server.pem -out server.crt.
Sí — necesita cargar la cadena de certificados junto con la clave pública y privada, o el sitio se vuelve inalcanzable aunque el certificado hoja en sí sea completamente válido. Si el cliente no proporcionó un archivo de cadena, o se perdió, importar el certificado de CA del sitio en la herramienta de descarga de cadena de myssl.com y generar la cadena desde allí es la solución estándar.
Haga doble clic en el archivo de certificado para abrirlo y revise la ruta del certificado. Si aparece un nombre de dominio en la cadena, está viendo la clave pública — el certificado hoja emitido para su sitio. Si no hay nombre de dominio, es un certificado de CA — útil para construir la cadena, pero no algo que deba cargar en el campo de clave pública.
Cuatro sospechosos habituales, en aproximadamente este orden: una versión de protocolo SSL/TLS no compatible en el cliente (SSLv2, SSLv3, TLS 1.0); un conjunto de cifrado que el WAF deshabilita por defecto por razones de seguridad, que puede habilitar a costa de parte de esa seguridad; una clave pública, privada o cadena que simplemente no coincide con lo que el servidor de origen realmente usa; o un cliente haciendo autenticación TLS mutua (bidireccional) con algo como un UKey — algo que este tipo de WAF no admite proxear en absoluto.
Esta nota se basa en los requisitos de certificado del WAF Huawei — una clave pública, clave privada y cadena de certificados en formato PEM/KEY/CRT estilo OpenSSL — y los comandos Keytool / OpenSSL usados para llegar allí desde JKS o PFX, además de los casos de campo que los respaldan. Si su WAF es de otro fabricante, los campos de carga exactos pueden diferir, pero la cadena de conversión subyacente — JKS a través de PFX hasta PEM/KEY/CRT — y las comprobaciones de cadena de certificados y clave pública versus CA se aplican directamente. No cubre la autenticación de certificado de cliente TLS mutua (bidireccional), que la mayoría de los dispositivos WAF no admiten proxear en absoluto.
Cuéntenos desde qué formato está partiendo — JKS, PFX, u otro — y dónde se rompe la cadena, y le ayudamos a interpretarlo.