Inicio / Notas técnicas / Conversión de formato de certificado SSL de WAF

Importación de certificado SSL de WAF: conversión de formato JKS, PFX y PEM

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

Por qué el mismo certificado se niega a cargar dos veces

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.

Cómo se relacionan realmente los tres formatos entre sí

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.

JKS Java Keystore Tomcat / WebLogic / JBoss PFX PKCS#12 IIS / Windows cert store PEM / KEY / CRT Apache / Nginx — OpenSSL format the WAF requires keytool openssl + Certificate chain intermediate CA — build via myssl.com if missing

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.

Los pasos de conversión reales

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.

Paso 1 — De JKS a PFX (Keytool)

Si el certificado proviene de un servidor Tomcat, WebLogic o JBoss, está en un único archivo JKS y necesita primero un paso por Keytool.

  1. Localice la utilidad Keytool del JDK en la máquina que contiene el archivo JKS — viene incluida con cualquier instalación estándar del JDK.
  2. Ejecute el comando importkeystore, apuntándolo al archivo JKS de origen y nombrando el archivo PFX de destino, con el tipo de origen configurado como JKS y el tipo de destino como PKCS12.
  3. Keytool solicitará la contraseña del keystore; proporcione la que usó el administrador del servidor del cliente al crear el archivo JKS.
keytool -importkeystore -srckeystore D:\server.jks -destkeystore D:\server.pfx -srcstoretype JKS -deststoretype PKCS12

Paso 2 — De PFX a PEM / KEY / CRT (OpenSSL)

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.

  1. Copie el archivo PFX en el directorio de instalación de OpenSSL (o asegúrese de que OpenSSL esté accesible desde donde se encuentra el archivo).
  2. Ejecute openssl pkcs12 para extraer todo en un único archivo PEM sin cifrar — este contiene tanto la clave privada como el certificado.
  3. Ejecute openssl rsa contra ese archivo PEM para extraer solo la clave privada como su propio archivo KEY.
  4. Ejecute openssl x509 contra el mismo archivo PEM para extraer solo el certificado público como su propio archivo 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

Paso 3 — Construir la cadena de certificados (si falta)

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.

  1. Verifique si el cliente ya proporcionó un archivo de cadena junto con el certificado. Si lo hizo y está intacto, pase directamente al Paso 4.
  2. Si la cadena falta o se ha perdido, 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.
  3. Una vez importado el certificado de CA, use la herramienta para generar la cadena, luego descargue el archivo de cadena resultante para cargarlo junto con la clave pública y privada.

Paso 4 — Verificar antes de cargar

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.

  1. Haga doble clic en cada archivo de certificado para abrirlo y revise la ruta del certificado. Un nombre de dominio en la ruta significa que está viendo la clave pública — el certificado hoja realmente emitido para este sitio.
  2. Sin nombre de dominio en la ruta significa que es un certificado de CA — útil para la cadena, pero no pertenece al campo de carga de clave pública.
  3. Cargue la clave pública, la clave privada y la cadena de certificados en sus campos correspondientes, habilite el descifrado HTTPS/SSL en el sitio protegido, y confirme que el sitio sea alcanzable por HTTPS antes de dar por terminado el trabajo.

4 trampas que causan la mayoría de las fallas de carga de certificados

Los comandos de conversión en sí rara vez fallan — estas cuatro cosas a su alrededor son las que realmente rompen la carga.

1. JKS, PFX y PEM no son intercambiables — y el WAF solo acepta uno de ellos

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.

2. Una cadena de certificados faltante rompe el sitio aunque el certificado sea válido

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.

3. Una clave pública y un certificado de CA se ven iguales hasta que realmente se abren

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.

4. HTTP funciona, HTTPS no — y el certificado no siempre es la razón

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.

Diseños de soluciones relacionadas

Cinco preguntas que surgen constantemente

Sacadas directamente del terreno — las que vale la pena tener una respuesta lista.

¿Qué software de servidor web usa qué formato de certificado?

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.

¿Cuál es la cadena de comandos real desde un archivo JKS de Tomcat hasta lo que necesita el WAF?

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.

Mi certificado proviene de una CA intermedia, no de la raíz — ¿eso cambia algo?

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.

¿Cómo sé si un archivo es la clave pública de mi sitio o solo un certificado de CA antes de cargarlo?

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.

Cargué el certificado y HTTP funciona pero HTTPS aún no — ¿por dónde empiezo?

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.

Límites honestos de esta nota

Límites honestos de esta nota

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.

¿Atascado convirtiendo un certificado para su WAF?

Cuéntenos desde qué formato está partiendo — JKS, PFX, u otro — y dónde se rompe la cadena, y le ayudamos a interpretarlo.

WhatsApp con un ingeniero →

Lectura relacionada

Solo usamos cookies para analítica anónima — sin publicidad ni rastreo entre sitios.Política de privacidad