Configure stunnel para envolver SSL para una sola aplicación

Configure stunnel para envolver SSL para una sola aplicación

estoy tratando de usartúnelpara conseguir un cliente Usenet más antiguo que admita SSL. Probé la siguiente configuración:

[myservice]
accept = <LOCAL_PORT>
connect = <REMOTE_HOST>:<REMOTE_PORT>

pero stunnel siguió fallando con el error:

Section myservice: SSL server needs a certificate

¿Qué estoy haciendo mal?

Respuesta1

Establecer client = yesen la [myservice]sección. Esto le dice a stunnel que el connectlado (también conocido como "servidor") es el lado SSL y el acceptlado (también conocido como "cliente") es simple. El valor predeterminado es lo contrario, que requiere un certificado SSL.

¡Pero eso no es todo! Por alguna extraña razón, stunnel utiliza de forma predeterminada un modo completamente inseguro que no verifica los certificados del servidor, lo que significa que estaría sujeto a ataques de intermediario (MitM). Para solucionar este problema, utilice las opciones verify = 2y CAfile. En Ubuntu, se CAfilepuede encontrar en /etc/ssl/certs/ca-certificates.crt(desde el ca-certificatespaquete). Mientras lo hace, también configúrelo options = NO_SSLv2para deshabilitar el protocolo SSLv2 inseguro.

Finalmente, cuando configures tu programa usenet, desactiva SSL, ya que la conexión entre la aplicación y stunnel NO utiliza SSL.

Escribí el siguiente script contenedor para ayudar con esto. Reemplace <LOCAL_PORT>, <REMOTE_HOST>y <REMOTE_PORT>según corresponda, y reemplácelo # ...con cualquier comando que desee ejecutar.

#!/bin/bash
PIDFILE=/tmp/stunnel-agent.pid

# Start stunnel in the background.
cat << EOF | stunnel4 -fd 0
pid = $PIDFILE

# Enable proper SSL security.  Without this, you are completely insecure!
verify = 2
CAfile = /etc/ssl/certs/ca-certificates.crt
options = NO_SSLv2

[myservice]
client = yes
accept = <LOCAL_PORT>
connect = <REMOTE_HOST>:<REMOTE_PORT>
EOF

# Start whatever program you want.
# ...

# Kill stunnel.
kill $(cat "$PIDFILE")

información relacionada