Luchando contra SSL y Chain Cert

¿Alguna vez has hecho alguna aplicación o desarrollo en el que utilices sub-dominios para tus clientes?

En términos de desarrollo no es nada complejo de hacer, pero existe un problema no menor para el cual no existe mucha información disponible y la poca info que hay, no es muy clara tampoco.

Caso hipotético

Tienes un servicio que ofrece tiendas online.

Tus clientes, al registrarse, obtienen una url con sub-dominio tucliente.tuservicio.com. Y de amable que eres, también compras un certificado SSL Wildcard *.tuservicio.com para que todos tus sub-dominios y clientes tengan el candadito.

De pronto comienzas a recibir solicitudes para integrar la API de Facebook Business, para que tus clientes puedan sincronizar catálogos de productos e inventario de forma automática. Excelente idea, ¿no?

Haces la integración, vinculas tiendas, catálogos, etc.

Ahora, con sólo un par de clicks, tus clientes tienen su catálogo de facebook business vinculado al sitio web que tú ofreces.

Y ahí comienza el problema.

De pronto te encuentras con que algunos clientes, al momento de configurar sus tiendas en Facebook Business, reciben un error: Dominio inválido.

Todo aquel que sepa de desarrollo, tiene claro que para solucionar un problema de forma definitiva, primero debes replicarlo. Esto te permitirá hacer pruebas reales y concretas para probar la solución.

Con esto en mente, haces el mismo flujo que tus clientes, sólo para darte cuenta que los flujos de creación de catálogos entre una tienda y otra son distintos. A pesar de eso, insistes hasta que llegas a la pantalla para ingresar una url y voilá…. ¿¡funciona perfecto?!

Pero tus clientes insisten en el error. Insistes e insistes, pero no logras replicar el problema. Facebook tampoco ayuda mucho, con los millones y millones que invierte año a año para hacer más cómoda su interfaz.

Luego revisas tu integración, la documentación de la API, te replanteas si estás usando los endpoints correctos, revisas keys, tokens, permisos de la aplicación… todo parece estar bien.

Luego recurres a Google… que lamentablemente no hace más que confundirte, encontrando comentarios de gente diciendo que facebook no permite el uso de sub-dominios o con links a documentación del año en que Napoleón aún se debatía si era buena idea salir de la isla de Elba o no.

También un par de supuestas soluciones que, al probar, no solucionan nada, el problema persiste.

Luego intentas buscar gente con experiencia. Expertos en facebook que sepan qué hacer en estos casos, sólo para darte cuenta que hoy en día, pareciera que mucha gente sabe menos de lo que cree saber.

“Ayúdame ChatGPT, eres mi única esperanza…”

Tal como Leia recurrió a Obi-Wan, tú recurres a ChatGPT, pero lamentablemente no sirve de mucho, al estar desconectado de internet y sólo estar informado de contenido hasta el 2021, no hace más que darte respuestas desactualizadas o medias obvias como “Debes revisar la documentación de la API de Facebook Business”. Aún así, son señales que el problema pasa por el lado de la integración, así que sigues revisando.

Comienzas a perder la esperanza. Te empiezas a deprimir y rendir. Dejas de contestar consultas de tus clientes, simplemente porque no tienes respuesta para dar… ya no sabes qué cara poner en esas reuniones de comité cuando te preguntan por el tema. Tampoco puedes evitar sentir tu orgullo un poquitín herido cuando escuchas comentarios como “busquemos a un dev que sepa hacerlo“, jajaja.

Y aquí es cuando llega el cambio de bando… si la luz no pudo, tal vez la oscuridad si. Recurres al Lado Oscuro: Microsoft.

“You don’t know the powah of the Dark Side…”

Resulta que Microsoft, en una movida magistral, se asoció con OpenAI hace un tiempo e integró ChatGPT a su buscador Bing. El detalle está en que ese ChatGPT si está conectado a internet y es capaz de leer contenido totalmente actualizado (como dicen, el enemigo de mi enemigo… ¿tiembla Google?).

Pero mucho más que eso, ante la consulta, Bing dio pistas claras sobre por dónde podía estar el problema.

Y no, no está relacionado con el desarrollo, ni la integración, ni la configuración de los sub-dominios ni la API de Facebook Business ni los tokens ni la cachaelaespá, es un problema 100% del certificado SSL de tu dominio.

¡LO SABÍA!

Pero, ¿por qué?… si el candadito aparece sin problemas en el browser.

Si haces un checkeo del certificado SSL en sitios como Decoder.link te vas a encontrar con esto:

Hay algo ahí que está fallando… El Chain o cadena. ¿Y eso qué es? y por qué está fallando?

Dicho en simple (porque tampoco es muy fácil de explicar), la cadena es el listado de los intermediarios que entregan el certificado SSL. Desde la empresa a la que lo compraste, hasta el intermediario root.

Si por algún motivo, esa cadena no está incluida en el certificado que usas, tendrás ese problema. No pregunten por qué podría pasar eso, la verdad no tengo ni idea.

¿Cómo se soluciona?

Probamos un par de cosas:

  • Re-generando el certificado, no funcionó.
  • Generando un nuevo archivo en formato PEM, concatenando CRT y KEY, no funcionó.

Ya estábamos pensando poner un ticket en Heroku o pagar los 20 USD que cobraba ssls.com para hacer ellos el trabajo, cuando apareció nuestro salvador: Un sitio con una interfaz horrible que haría dudar a cualquiera, pero que prometía generar un chain correcto para nuestro certificado: WhatIsMyChainCert.com

Probamos, se generó un nuevo PEM, lo instalamos y….

Libre sooooooy, libre soooooooy….

Pero aún faltaba la prueba de fuego con facebook business:

Como dijo Arquímedes: EUREKA CTM!

Créditos

No puedo dejar de agradecer a Fernanda, se mandó flor de investigación en el tema. De hecho fue ella la que se adentró en el lado oscuro, antes que yo, jaja.

Agregar un comentario

Tu dirección de correo electrónico no será publicada. Los campos requeridos están marcados *