|
| ▲ | patmcc 9 hours ago | parent | next [-] |
| No joke, it just came up at work as a possible solution to something. We have some legacy systems that talk over TCP in plaintext. It's all within well-secured networks on locked down machines, so fine. But now we want to move things to Megaport, and their agreement says "btw don't put anything in plaintext ever, we guarantee nothing". So stunnel will probably be the fix. |
| |
| ▲ | danlitt 43 minutes ago | parent | next [-] | | This is cool, but "legacy systems that talk over TCP in plaintext" sounds like it might qualify for "horribly outdated", no? | |
| ▲ | Piraty 3 hours ago | parent | prev | next [-] | | I was involved in a very similar situation once.
I recommend wireguard for this, it's mature for years, has superb support in linux and some BSDs and there are userspace implementations if you need that.
It wraps traffic in UDP, the overhead is much smaller thus throughput mich higher than traditional TCP-based VPN (you want to avoid tcp-in-tcp!).
There were once patches posted to lkml that passed QoS-flags from the inner packet to the wireguard packet, if you need that. not sure if that landed upstream in the end.
key distribution and lifecycle management is what was still unsolved years back when this was evaluated, nowadays tailscale and its clones and similar oss should serve you well. | |
| ▲ | nine_k 8 hours ago | parent | prev [-] | | Not wireguard? | | |
| ▲ | pfix 5 hours ago | parent | next [-] | | Not a security expert and also curious about implications: I always considered it the best solution to have both: VPN encryption and TLS encryption over the VPN. Different OSI Layers. Different Attack Surfaces. Not sure if that is a recommended pratice though (see initial remark ;) ) | |
| ▲ | 01HNNWZ0MV43FF 6 hours ago | parent | prev [-] | | Maybe they need something that works without root and IP space allocation. I like WireGuard and use it myself but it is a bit of an installation compared to binding a port |
|
|
|
| ▲ | TheFinalDraw 8 hours ago | parent | prev | next [-] |
| The company I work for has used it as a relatively simple method for implementing mutual TLS (mTLS) for legacy apps or systems for which it would otherwise be annoying or more difficult to integrate mTLS for, or which doesn’t support mTLS with custom trust store. |
| |
| ▲ | ephaeton 2 hours ago | parent [-] | | same here. This thing is gold for "80% solutions" in that respect. It's easier to sanely integrate with legacy transport protocols than trying to update the legacy code base to implement mutual trust the harder, more direct and more error-prone way, IMO. |
|
|
| ▲ | ray_v 10 hours ago | parent | prev | next [-] |
| Let me introduce you to software for public library information systems that still thinks it's the 90s! |
| |
|
| ▲ | eps 3 hours ago | parent | prev | next [-] |
| Stunnel basically allows you to easily secure existing network protocols. POP3 over stunnel -> SPOP3. A practical solution, both for legacy components and for the cases when you don't want to deal with implementing TLS natively. Ultimately, it's very Unix in spirit. Does one specific thing and is composable with others. |
|
| ▲ | nirui 7 hours ago | parent | prev | next [-] |
| Hmmm... Got me thinking, why must all software implement (and maintain) transport security? The security standard changes/improves over time. With software like stunnel takes care of it, your software could be practically security wise up-to-day forever as long as you or your user keeps their stunnel updated. |
| |
| ▲ | drowsspa 4 hours ago | parent | next [-] | | That's basically the idea behind zero trust, isn't it? The idea being that you can't even knock on the TCP port if you're not authenticated | |
| ▲ | 01HNNWZ0MV43FF 6 hours ago | parent | prev [-] | | I use Caddy the same way. My web apps aren't allowed to think about TLS, they sit behind Caddy and I'm secure as long as I keep it updated |
|
|
| ▲ | chasil 7 hours ago | parent | prev | next [-] |
| If you want an encrypted tunnel maintained by inetd or systemd socket activation, then stunnel is easier to use in this context than ssh. Edit: I put stunnel on port 443 and have it connect to port 80 on my Apache webservers, because I like one way of doing TLS. This guide has been useful for many years in cipher selection: https://hynek.me/articles/hardening-your-web-servers-ssl-cip... |
|
| ▲ | creatonez 10 hours ago | parent | prev | next [-] |
| I mean, most web application backends don't implement TLS at all, under the assumption that you're using it alongside a reverse proxy. Most of the time this is nginx, but if you want to ensure no bugs are introduced on the HTTP level by the reverse proxy, stunnel is a perfectly fine option. |
| |
| ▲ | boneitis 7 hours ago | parent [-] | | Right! That, or I otherwise encounter some kind of asymmetry where one side, whether it is a client or server, implements/requires speaking TLS whereas the otherside isn't readily equipped to do so. I've found stunnel a godsend for bridging the gap. Granted, I am more of a sysadmin-ey type where a few times I've had to abruptly/quickly get something up and running. |
|
|
| ▲ | ectospheno 9 hours ago | parent | prev | next [-] |
| I used it once with althttpd. https://sqlite.org/althttpd/doc/trunk/althttpd.md |
| |
| ▲ | hwj 32 minutes ago | parent [-] | | Another Althttpd user here. Being able to write a "microservice" just by making a file executable is awesome. |
|
|
| ▲ | ranger_danger 10 hours ago | parent | prev | next [-] |
| I use it to wrap my gstreamer tcp streams in TLS to send them over the internet, but socat can also do the same thing. |
|
| ▲ | renewiltord 2 hours ago | parent | prev | next [-] |
| Allows me to speak SSL and receive mail. I like that. I sign up for a bunch of stuff that I want RSSified. I don’t want to implement SSL. This does the trick. |
|
| ▲ | TZubiri 7 hours ago | parent | prev [-] |
| Is there any other way to do this? Just slap an HTTPS proxy on top of an pure HTTP server. It's simpler to debug and understand. Otherwise you need to learn how to slap SSL onto 10 different HTTP things. |