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.

¿Adiós twitter?

Desde marzo del 2007 que he sido usuario de twitter. Tampoco es que viva en torno a eso, sino que entro un par de veces por semana a comentar y responder por aquí, por allá, etc.

Sin embargo, creo que hoy twitter se ha transformado en una de las peores cloacas mentales de mucha gente. El nivel de odiosidad que se encuentra llama la atención y esto no es nuevo, lleva ya un buen tiempo.

Es casi imposible tener intercambios de opinión con cualquier persona sin que salgan trolls a sumar odio o decir tonteras que lo único que buscan es molestar, atacar, distraer, y que finalmente logran que la conversación se desvíe de lo que era, o que simplemente no exista interacción alguna con aquella persona que sigues o que te sigue.

Pero lo peor de todo, es que twitter se ha transformado en un eco de fake news a lo largo del tiempo. Se intenta tomar medidas, pero son inútiles mientras los usuarios sean los mismos promotores de esas fake news, sin importarles si son ciertas o no. Al final, el problema no son las fake news, son los usuarios tóxicos que intencionalmente quieren propagarlas.

Todo esto me ha alejado bastante de la red del pajarito.

Facebook se ha transformado en reflejo de eso también, y por lo mismo mi cuenta también está abandonada.

Sin twitter o facebook, tendríamos gente gritando a los 4 vientos que la tierra es plana? O que la vacuna del COVID tiene un chip de control mental? Habría ganado el Brexit en Inglaterra o Trump en USA?

Hoy en día, las virtudes de twitter no superan a sus defectos, y por esto se ha transformado en una herramienta tóxica.

Así que eso, adieu twitter.

Elon, me extrañarás, lo sé. Ánimo.

Creando mi propia oficina :)

Llevo mucho tiempo trabajando de forma remota. En el pasado, hice teletrabajo permanente en Entel durante casi 12 años. También trabajé remoto en la creación de proyectos para otros clientes y de forma independiente y, si bien la oficina nunca fue un tema, últimamente he venido batallando con un espacio propio de trabajo en mi casa.

En su momento, fue un dormitorio en el segundo piso. Luego nació mi segundo hijo y me quedé sin dormitorios para ocupar, por lo que decidí mover mis pilchas a una esquina del dormitorio principal, gran error!

Después de un tiempo, decidí mudarme a la sala de estar y, si bien estaba bastante cómodo, con aire acondicionado al lado, una ventana con buena luz y mucho espacio, la privacidad para poder trabajar fue un problema constante.

Fue por esto que decidí embarcarme en un pequeño proyecto, crear mi propia oficina!

No es que iba a hacer una ampliación a la casa o algo así, más bien decidí sacrificar el walking-closet y transformarlo en mi futura oficina.

Tomé las medidas del lugar y, si bien no es lo más amplio del mundo, me alcanzaba perfectamente para lo que yo necesitaba. Probablemente hay presos en cárceles que tienen más espacio que yo, pero bah!

Luego vino la etapa de negociación con mi esposa. Al principio no lo tomó muy bien, pero cuando conversamos los detalles y opciones, aceptó la idea.

Mi objetivo era tratar de no gastar demasiado. Ya tenía casi todas las herramientas y materiales que necesitaba, por lo que el gasto debía ser mínimo.

Comenzando

Lo primero fue desmontar todo el mueble instalado en el closet. Incluyendo el guardapolvo.

Al quitar los guardapolvos, me encontré con que algunas partes del muro (especialmente la volcanita) tenían perforaciones. Probablemente debido a la humedad, ya que es un muro que colinda con un baño, específicamente con una tina/ducha.

Por esto, apliqué espuma expansiva para cubrir y poder dejar la base del muro más pareja. Junto con esto, apliqué pasta de muro a todas las perforaciones e imperfecciones en general, para emparejar.

El walking-closet no tenía enchufe, por lo que también necesitaba una extensión eléctrica. Afortunadamente, uno de los muros tenía un enchufe que daba al lado opuesto, por lo que fue sólo instalar una caja por dentro y extender cables de un lado del muro al otro.

Originalmente iba a dejar los cables cubiertos con una canaleta, pero en base a un comentario de un amigo, me dije: Y qué malo podría pasar si los escondo en el muro?. Probablemente, alguien que sepa cómo hacerlo, se moriría de la risa de mi solución, pero bah, no quedó tan mal, con lijado y pintado, no se va a notar 🙂

Ahora empieza el trabajo pesado, a lijar!

¡Lijando! Para dejar todo parejo.

Una vez terminado el lijado, decidí aplicar impermeabilizante en todos los muros. Debo decir que de todo el proceso, esta fue la parte más desagradable. Tanto por el olor del impermeabilizante, como lo engorroso que es aplicarlo (cubre poco y el avance es lento!).

Como dije, fue probablemente la parte más engorrosa de todo esto, pero aún así la recomiendo. No sólo porque protege de la humedad, sino porque también sirve para igualar las texturas del muro. Esto permite tener un mejor resultado al momento de pintar, sin que se noten los lugares donde se aplicó pasta al muro. Seguramente existen otros productos para esto (imprimantes?) pero yo qué sé 🙂

¡Ahora, a pintar! Mi idea era pintar un muro de un gris con un leve tono violeta, donde colgaría dos guitarras. El resto de los muros serán blancos.

Ahora vamos con el blanco.

Una vez todo pintado, con dos o tres manos de pintura, empiezo la instalación de los paneles acústicos.

¿Alguna vez han estado en un cuarto pequeño, vacío y han intentado hablar? Han notado el eco en los muros? Es muy desagradable. Bueno, los paneles de esponja acústica son precisamente para evitar eso.

¿A ver cómo se ve?

Si, es una Red Special, junto a mi querida Strat. Si no sabes quién usa una Red Special, ¡Fuera de aquí y no vuelvas!

Ahora el guardapolvos y junquillo!

Ahora lo importante. Debido a que es una pieza cerrada, podría tener problemas con la señal de WiFi. Si bien pareciera que la señal es buena, decidí asegurarme y sacar un punto de red para no depender de la generosidad del muro de concreto.

Debo reconocer que crear el punto de red me tomó bastante más de lo que esperaba. Tuve que crear los conectores RJ45 3 veces, no porque quedaran mal, sino porque al momento de probar la red, no me daba más de 80Mbps.

Luego me di cuenta que estaba usando la norma T568B para crear el conector (que es el standard hoy para los cables cat 6, de hecho la foto del conector es un T568B), sin embargo, no me estaba dando la velocidad que debería.

Por esto decidí probar con la norma T568A y voilá. La prueba de fuego:

Un manjars…

Finalmente instalé dos focos LED RGB de 30w. Mi idea es iluminar la habitación en base a la proyección de la luz en el muro, no apuntar directamente a la habitación como tal. Y de paso, puedo poner el color de luz que yo quiera 🙂

Y el gran resultado:

No está de más decir que no soy ningún experto en construcción. Mi experiencia se limitaba a la instalación de cuadros, luces, armado de muebles y cosas así. Nunca me había involucrado en un proyecto como éste y, la verdad, me gustó mucho el resultado. También lo pasé muy bien maestreando y aprendí muchas cosas de construcción que no sabía.

Y lo mejor de todo, es que no gasté tanto. Entre el impermeabilizante, el guardapolvo, las canaletas, los paneles acústicos, los focos led y la pintura blanca (la gris ya la tenía de antes) gasté aprox. $110.000. Todo el resto de lo que ocupé ya lo tenía de antes.

UI KIT

Product Hunt tiene un amplio catálogo de recomendaciones. A veces pueden ser cosas muy locas o de poca utilidad, pero de vez en cuando le pegan al gato con buenas opciones.

Ese es el caso con UI KIT, un sitio donde, tal como dice el nombre, te ofrecen Kits de UI (user interface) que pueden ser de utilidad. Si bien la mayoría son para utilizar en Figma (me encanta Figma, pero suelo usar más Sketch), aún así son muy útiles para cuando te toca jugar con front y estás corto de imaginación o necesitas una mano con ideas.

Limpiando estilos de un elemento

Un tip que puede resultar muy útil. Sabías que puedes eliminar todos los estilos de un elemento HTML utilizando esto? Yo no tenía idea, así que lo guardo.

Esto borrará todas las propiedades CSS del elemento boton. OJO: No aplica a aquellas asignadas con !important, salvo que también le asignes !important al unset, aunque eso no tendría mucho sentido, ya que no le podrás asignar propiedades después 😛

Eloquent: Comparando datos con whereNull

Llevo años usando Laravel y Eloquent. Muchas veces me ha tocado lidiar con datos NULL y normalmente lo que uno haría para filtrarlos, sería algo como:

$query->where('campo', '!=', null);

No muy elegante, o sí?

Pero el otro día, me encontré con un tip que no conocía. Al parecer puedes filtrar (o seleccionar) los campos NULL utilizando:

$query->whereNull('campo');

Equivalente a campo is null

$query->whereNotNull('campo');

Equivalente a campo is not null

No tengo claro desde qué versión de Laravel se puede utilizar, pero lo más antiguo que pude probar fue la 5.8.2 y funcionó sin problemas.

Más elegante, no?

¡Hola mundo!

Tal cual, ¡hola mundo!

Ya perdí la cuenta de cuántas veces he reseteado esta web. Existe desde allá por el año 98 o 99. Sin dominio propio en ese tiempo, pero desde julio del 2000 que está bajo kyron.cl.

En su tiempo fui el 2do sitio con más visitas en Chile en la categoría sitios personales (no existía el concepto de blog todavía). Así lo registraba una web española de estadísticas que olvidé el nombre (era WebStatsAlgo).

¿El contenido? Puras weás, jaja. Opinión, política, música, juegos, programación, diseño… lo que tenía ganas de decir, lo decía.

No fue eso lo que trajo visitas obviamente, fue principalmente otra cosa, pero eso es otra historia que sólo cuento con un par de cervezas al frente.

Aún así, me decidí a resetear otra vez mi blog y enfocarme sólo en aspectos relacionados con programación, tips, diseño y esas cosas.

Eso sí, esta vez dejaré fuera la política, quejas y esas cosas, así que si viene con ganas de discutir o pelear, porfa cierre la puerta por fuera 😛