Configurar Stunnel por primera vez puede ser un poco complicado, sobre todo si no estás muy familiarizado con SSL/TLS o con el manejo de certificados. Es una herramienta potente, pero algo quisquillosa: si cometes un error tipográfico o falta un archivo, no se conecta o genera un error críptico. A veces, la configuración requiere ensayo y error, sobre todo en Windows, donde los permisos y los firewalls pueden causar problemas inesperados. Pero una vez que funciona, obtienes una forma bastante sólida de proteger aplicaciones o servicios antiguos que no admiten cifrado nativo, sin necesidad de una VPN completa. Esta guía te guía a través de la instalación y configuración de un servidor y un cliente sencillos, con autenticación de certificados y cifrado TLS, para que puedas empezar a proteger tu tráfico sin complicaciones.
Cómo arreglar la configuración de Stunnel y hacer que funcione sin problemas
Uso de Stunnel en Windows: Cómo lograr que el servidor funcione correctamente
Esta parte trata sobre la configuración de Stunnel como servidor: la configuración principal donde escucha las conexiones cifradas entrantes y las reenvía internamente. Esto a veces resulta complicado porque el firewall de Windows o la forma en que se generan los certificados pueden generar problemas, o simplemente olvidar apuntar a los archivos correctos. La clave está en configurar correctamente y abrir el puerto (como el 443 para HTTPS) en el Firewall de Windows, ya que, por supuesto, Windows tiene que complicarlo más de lo necesario.
Descargue el instalador y, al ejecutarlo, seleccione las opciones predeterminadas, que incluyen openssllas herramientas necesarias para generar todos los certificados. A continuación, abra el Símbolo del sistema con permisos de administrador y diríjase a `c:\Archivos de programa (x86)\stunnel\bin`, ya que ahí se encuentran los binarios de OpenSSL para crear claves y certificados.
- Generar clave privada de CA:
openssl genpkey -algorithm RSA -out ca.keyNo se necesita contraseña, ya que se trata de una CA raíz. - Cree el certificado de CA:
openssl req -new -x509 -key ca.key -out ca.crt -subj "/O=woshubLTD/OU=IT/CN=CA_webserver1.com"Asegúrese de que la información del asunto sea lo suficientemente descriptiva como para identificar esta CA posteriormente. - Generar la clave privada del servidor:
openssl genpkey -algorithm RSA -out server.key. - Cree una CSR para el servidor:
openssl req -key server.key -new -out server.csr. - Firme el CSR con su CA:
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -subj "/O=woshubLTD/OU=IT/CN=server_webserver1.com". Este certificado ahora puede usarse para HTTPS dentro de su túnel. - Realice pasos similares para un certificado de cliente: genere una clave de cliente (
openssl genpkey -algorithm RSA -out client.key), una CSR y luego fírmela con su CA.
Ahora, copie la CA, los certificados de servidor y las claves privadas en `C:\Archivos de programa (x86)\stunnel\config`. Por ejemplo: ca.crt, server.crt, y server.key. Puede realizar una prueba rápida editando stunnel.conf.
; Basic log info, helps with debugging debug = info output = stunnel.log ; Encryption stuff, tweak if needed options = CIPHER_SERVER_PREFERENCE options = NO_SSLv2 options = NO_SSLv3 options = NO_TLSv1 sslVersion = TLSv1.2 sslVersion = TLSv1.3 ciphers = ECDHE-RSA-AES256-GCM-SHA384 ; Paths to certs cert = server.crt key = server.key CAfile = ca.crt ; The actual tunnel service setup — replace IPs and ports as needed [ITPortal] accept = 192.168.158.144:443 connect = 127.0.0.1:80 verify=2
Asegúrate de que el puerto (como el 443) no esté ocupado. Luego, abre ese puerto en el Firewall de Windows Defender. Puedes hacerlo con un comando de PowerShell como:
New-NetFirewallRule -DisplayName "ITPortal_stunnel_443" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow
Esto es algo imprescindible, de lo contrario las conexiones simplemente se bloquearán.
Inicie Stunnel GUI una vez en su configuración para verificar errores; si funciona correctamente, ciérrelo, abra un Símbolo del sistema como administrador e instálelo como un servicio:
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install "C:\Program Files (x86)\stunnel\config\stunnel.conf"
Luego, enciéndelo con:
Start-Service wrapper
Esto hará que tu contenedor TLS se ejecute en segundo plano, escuchando en el puerto 443. Bastante fácil, ¿verdad? Bueno, casi: si ves errores o no se conecta, revisa el archivo de registro stunnel.logpara ver qué falla. A veces, se trata de un error tipográfico, un archivo que falta o un problema del firewall.
Conseguir que el lado del cliente coincida con el servidor
La configuración del cliente es similar, pero en general menos compleja. Instale Stunnel, copie el certificado de la CA ( https://github.com/memstechtips/Winhance ) y los certificados del cliente a `C:\Archivos de programa (x86)\stunnel\config`. Luego, modifique la configuración:
[ITPortal] client = yes accept = localhost:8080 connect = 192.168.158.144:443 CAfile = ca.crt cert = client.crt key = client.key verify=2
Ejecute Stunnel en el cliente y, al dirigir su navegador a [nombre localhost:8080del servidor], se redirigirá de forma segura al servidor remoto. Si es necesario, también puede agrupar el certificado y la clave del cliente en un solo archivo PEM (por ejemplo, mediante [nombre del servidor] Get-Content client.key, client.crt | Set-Content client.pem) y luego dirigirse a [nombre del servidor cert = client.pem].Recuerde que, si ejecuta esto como servicio posteriormente, los mismos certificados deben ser accesibles y los permisos deben estar configurados correctamente.
Por último, si necesita revocar un certificado comprometido, agregue la opción CRLpath que apunta a la carpeta que contiene sus listas de revocación de certificados. Para configuraciones más avanzadas, consulte este repositorio de GitHub para obtener trucos de automatización y más secretos de configuración.
Y eso es todo. Configurar todo correctamente es un poco complicado, pero una vez instalado, Stunnel puede ser un salvavidas para cifrar servicios antiguos o crear túneles rápidos y seguros sin tener que lidiar con VPN completas.
Resumen
- Se generaron todos los certificados y claves con OpenSSL, sin grandes sorpresas.
- Configuré stunnel.conf con cuidado, prestando atención a las rutas y los puertos.
- Establezca reglas de firewall entrantes para que nada bloquee su túnel.
- Inicié el servicio y revisé los registros en busca de errores, que es generalmente donde se encuentran las configuraciones incorrectas.
- Lo probé con un navegador o curl y me aseguré de que el tráfico estuviera encriptado en la red.
Resumen
Conseguir que Stunnel funcione sin problemas requiere paciencia, pero una vez que funciona, es una configuración bastante sólida para cifrar el tráfico en servidores antiguos o aplicaciones que no son compatibles con los estándares TLS modernos. La clave está en mantener la cadena de certificados correcta y revisar las reglas del firewall. Si se producen errores, los registros suelen ser la mejor opción; a veces, es necesario reiniciar el servicio después de realizar los cambios. Con suerte, esto le ahorrará algunas horas a alguien, o al menos evitará la ansiedad cuando las cosas no funcionen a la primera.