sslproxy

Reading time: 2 – 4 minutes

L’sslproxy és una petita eina d’aquelles que van de PM… què fa doncs el nom ho diu tot:

SSL Proxy server listens on a TCP port, accepts SSL connections, and forwards them to another local or remote TCP port. For example, it is possible to create an HTTPS server if you have an HTTP server and you run an SSL Proxy server on port 443 which forwards the connections to port 80. SSL Proxy’s design makes it as secure as possible and still perform well.

Un petit exemple on es pot veure com funciona. Llencem una petició HTTPs des del nostre navegador contra l’sslproxy i aquest re-enviarà la petició a un servidor TCP (netcat) i podrem veure la browser fingerprint del nostre navegador. O dit més senzill, la petició HTTP del nostre navegador, sense la S. O sigui, sense l’SSL.

Posem el servidor TCP (netcat) a escoltar el port 8000:

nc -l p 8000

Llencem el sslproxy amb el seu certificat SSL corresponent:

ssl_proxy -s 443 -d -c 8000 -C server-cert.pem -K server-key.pem

Anem al navegador i la barra de direcció posem:

https://localhost

Si mirem el nc podrem veure que hi ha la petició HTTP que llençavem:

GET / HTTP/1.0
Host: localhost
Accept: text/html, text/plain, application/vnd.sun.xml.writer, application/vnd.sun.xml.writer.global, application/vnd.stardivision.writer, application/vnd.stardivision.writer-global, application/x-starwriter, application/vnd.sun.xml.writer.template
Accept: application/msword, application/vnd.sun.xml.calc, application/vnd.stardivision.calc, application/x-starcalc, application/vnd.sun.xml.calc.template, application/excel, application/msexcel, application/vnd.ms-excel, application/x-msexcel
Accept: application/vnd.sun.xml.impress, application/vnd.stardivision.impress, application/vnd.stardivision.impress-packed, application/x-starimpress, application/vnd.sun.xml.impress.template, application/powerpoint, application/mspowerpoint
Accept: application/vnd.ms-powerpoint, application/x-mspowerpoint, application/vnd.sun.xml.draw, application/vnd.stardivision.draw, application/x-stardraw, application/vnd.sun.xml.draw.template, application/vnd.sun.xml.math
Accept: application/vnd.stardivision.math, application/x-starmath, text/sgml, video/mpeg, image/jpeg, image/tiff, image/x-rgb, image/png, image/x-xbitmap, image/x-xbm, image/gif, application/postscript, */*;q=0.01
Accept-Encoding: gzip, compress
Accept-Language: en
User-Agent: Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.7e

L’exemple és una mica xorra a nivell funcional, però crec que a nivell conceptual és molt explicit de quina és la funcionalitat que ens ofereix el sslproxy. Sobretot si hem programat una aplicació que no té suport SSL i li volem afegir seria tan senzill com aplicar el que explico aquí.