[TriLUG] supporting legacy SSL ciphers
William Sutton via TriLUG
trilug at trilug.org
Mon Feb 22 00:07:29 EST 2021
SOunds like a cretive solution. BTW, found this forum with a bunch of
frustrated TMIO owners:
https://www.houzz.com/discussions/2285285/anyone-heard-of-tmio-intelligent-ovens-need-parts-and-service
William Sutton
On Sun, 21 Feb 2021, Alan Porter via TriLUG wrote:
>
> About three months ago, I posed a question here about how to support "legacy"
> SSL/TLS ciphers on a modern web server. The application was to continue
> supporting the weather screensaver on the 2006-era TMIO "internet ovens".
>
> The problem in a nutshell: the ovens run a home-brewed Linux distro from
> 2006. They connect via https to a server that I maintain, and that server
> fetches weather data from NOAA. Modern servers will not accept SSL2 or SSL3
> connections from a 2006-era browser.
>
> This week, it got worse. Now NOAA won't accept TLS 1.0/1.1 connections from
> our 2006-era web server.
>
> We had some great solutions in the earlier thread. Most of the discussion
> had to do with grabbing the source of the openssl or GnuTLS libraries and
> enabling ancient ciphers.
>
> Aaron Joyner proposed writing a new weather feed app in 'go' using an older
> development environment, and then running it on the new server. The static
> linking would ensure that it would still run OK on any host. One problem is
> that I did not have 'go' installed on the old server, and good luck trying to
> 'apt-get install golang', since none of the Debian 4.0 "Etch" mirrors are
> still alive.
>
> I started thinking about running the entire old server image in a virtual
> machine... a VM inside the virtual machine that Linode gives me. But then I
> got to thinking smaller. If not a full VM, how about a docker image. And
> smaller. If not a docker image, how about just a 'chroot'?
>
> CHROOT is what I did... and it works!
>
> I provisioned a brand-new server from Linode, and rsynced the entire
> filesystem from the 2006-era server into a subdirectory (we can call it
> $CHROOTDIR). Then I removed all of the cruft, like years of old logs.
>
> I used "stunnel" on the old image to listen to port 443 and forward it to an
> unencrypted port. Like this:
>
> exec chroot $CHROOTDIR /usr/bin/stunnel -d 0.0.0.0:443 -p $RUNDIR/weather.pem
> -A $RUNDIR/tmio-ca.pem -r 127.0.0.1:1443 -f -o /var/log/stunnel.log
>
> This ancient stunnel runs in a chroot, so it uses all of the old 2006-era
> libraries to establish an SSL2 or SSL3 connection with any ovens that call
> in. It forwards the connection to a local port (1443), where my modern
> python/flask app is running. The flask app has one single endpoint, which
> checks the weather from NOAA (using modern TLS 1.3), and it returns the
> weather data back through the stunnel and down to the oven.
>
> oven -- chroot/stunnel -- nginx/gunicorn/flask -- NOAA
>
> * oven speaks SSL2 to chroot/stunnel on port 443
> * chroot/stunnel speaks plain HTTP to nginx/gunicorn/flask
> * flask speaks modern TLS to NOAA
>
> Testing this was just a matter of trying each link enough to tell they were
> working. The first step was to hit my server with Qualys's scanning tools at
> https://www.ssllabs.com/ssltest/analyze.html?d=my.server.fqdn&latest . It
> greeted me with a big fat "F". Excellent!
>
> Then I tried some "curl" commands against the local unencrypted port 1443.
> Eventually, I was able to connect all of the dots: nginx config, guniform
> config, shell script to run the stunnel command, systemd config to start the
> tunnel on boot. The last step was to try the entire path from an oven
> (running in virtualbox on my laptop) up to NOAA and back.
>
> Screenshot:
> https://cloud.alanporter.com/index.php/s/eJpd5k8TqiAAgxc
>
> Thanks for the lively discussion here about potential solutions to the
> problem of supporting ancient SSL clients.
>
> Alan
>
>
>
>
> --
> This message was sent to: William <william at trilug.org>
> To unsubscribe, send a blank message to trilug-leave at trilug.org from that
> address.
> TriLUG mailing list : https://www.trilug.org/mailman/listinfo/trilug
> Unsubscribe or edit options on the web :
> https://www.trilug.org/mailman/options/trilug/william%40trilug.org
> Welcome to TriLUG: https://trilug.org/welcome
More information about the TriLUG
mailing list