¡Te damos la bienvenida al nuevo sysarmy --help! Para recuperar tu usuario pedí un password reset.

Proxy para https

La pregunta sería: ¿cómo hago para auto-man-in-the-middle-zarme? Pero si lo pongo así, no se va a entender, no? :)

Detalles: estoy desarrollando una aplicación en PL/SQL, que necesita conectarse a un sitio vía HTTPs pero no lo puedo realizar por un bug en el PL/SQL. La solución correcta (y que será la que implementaré) es actualizar la base de datos, con eso se actualiza el PLSQL y todo funciona bien... El tema es que esta tarea es bien delicada y puede llevar bastante tiempo.

El bug se produce cuando el certificado del sitio con el que me voy a conectar (google.com en este caso) tiene muchos "name constraints" o "sinónimos": el certificado de Google vale para google.com pero también para otros subdominios o dominios de google. Esto surge de la nota de Oracle con la que distribuye el parche y probé mi función contra otros sitios que tienen certificados sin sinónimos y la anda perfectamente. :(

Lo que busco es una solución "no correcta" que pueda solucionar el problema lo antes posible y lo que se me ocurrió es usar "a mi favor" el man-in-the-middle: pensé en instalar un proxy (lo más sencillo posible) y que mi función PLSQL se conecte con ese proxy (habilitado únicamente para que esa función lo use, poniendo ip, puerto, usuario y password que sólo esta función conozca) y que sea el proxy el que se encargue de hacer la conexión de Google, usando el certificado correcto (con todos los "sinónimos") que yo no puedo usar en PLSQL por el maldito bug.

El proxy debería correr en linux, ser lo más sencillo y liviano posible. No voy a tener muchos accesos, no se transmite mucha info (es para validar un reCaptcha). Y, fundamentalmente, es un parche temporal hasta poder actualizar la base de datos.

Finalmente la pregunta: ¿conocén algún proxy "bueno, sencilla y barato" que sirva para lo que quiero hacer). No necesariamente tiene que ser un proxy con mucha funcionalidad adicional... si fuera un comando o script de linux, también serviría.

Espero haber sido claro y, desde ya, muchas gracias.

Respuestas

  • Lo que necesitás es configurar nginx en modo proxy-forward, incluso hasta podés "simular" que el host real google.com (ponele) es tu propio proxy.
    https://ef.gy/using-nginx-as-a-proxy-server


    Pero, según esto que decís

    contra otros sitios que tienen certificados sin sinónimos y la anda perfectamente

    Ahí tendrías el problema de que el OS/applicación donde corrés tu PL/SQL puede llegar a dar error por certificado autofirmado, ya que no tenés el *.key original de google (ponele)

    Solucionaría eso creando mi propia CA en el server donde correría mi nginx

    https://jamielinux.com/docs/openssl-certificate-authority/
    http://linoxide.com/security/make-ca-certificate-authority/

    Una vez generada la CA, repartís los certificados incluso a los servers clientes y todos reconocerían un certificado https firmados por la CA pirulito correctamente.

    No sé en Centos/RHEL/Oracle Linux flavors cómo es, pero en Debian tenés el script /usr/lib/ssl/misc/CA.pl que usa la config que tengas en /etc/ssl/openssl.cnf para generarte una CA hecha y derecha y te facilita mucho las cosas.

    Salutes

  • Muchas gracias por las respuestas. Parece que hay varias alternativas... tengo un rato para investigar :)

    Saludos.
Este hilo ha sido cerrado.