0
Proxy para https

Solved 5 Respuestas 30 Views

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.

5 Respuestas

4
Mejor respuesta

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

respondido por Mstaaravin (1,440 puntos) Ago 5, 2016
seleccionada por ajolo Sep 14, 2016
1
Fijate stunnel, me parece que te serviría.
respondido por anónimo Ago 5, 2016
1
Squid, con un certificado en el cual tu cliente confie.
respondido por anónimo Ago 5, 2016
1
Por aca paso algo parecido y u2nl fue la solucion (http://www.reitwiessner.de/programs/u2nl.html)
respondido por Froden Ago 5, 2016
0
Muchas gracias por las respuestas. Parece que hay varias alternativas... tengo un rato para investigar :)

Saludos.
respondido por HacheEle (1,140 puntos) Ago 6, 2016
...