[WARN]: tcp: tls: first record does not look like a TLS handshake when terminating TLS
Author: sbrlCreated Dec 14, 2021Updated Jan 29, 2026
Labelsneed responsestale
When I configure Fabio to terminate TLS for a Mosquitto MQTT server, I get the following error:
Dec 14 16:55:59 SERVER_NAME fabio[29480]: 2021/12/14 16:55:59 [WARN]: tcp: tls: first record does not look like a TLS handshakeMy setup is such:
- Fabio runs a the reverse proxy, and accepts MQTTS connections on port 8883 and terminates TLS.
- Fabio then makes unencrypted MQTT requests to the backend MQTT server listening on port 1883 on behalf of the client.
- Consul is obviously in use to keep track of services.
- Nomad + Docker are being used to run services.
The following instructions were derived from the official documentation at https://fabiolb.net/feature/tcp-proxy/.
Steps to reproduce
- Setup a Mosquitto MQTT server (
sudo apt install mosquitto, more in depth tutorial, part 2) - Register 2 services in Consul.
mqttswith the tagsurlprefix-:8883andproto=tcp, andmqttwith the tagsurlprefix-:1883andproto=tcp - Configure Fabio with this:
proxy.addr = :1883;proto=tcp,:8883;proto=tcp;cs=your_valid_certstore;- Start Fabio and the mosquitto MQTT server
- Attempt to connect with
mosquitto_sub(sudo apt install mosquitto-clients):
mosquitto_sub -h mqtt.yourdomain.com -p 8883 -t '#' -v
# Or, with authentication setup:
mosquitto_sub -h mqtt.yourdomain.com -p 8883 -t '#' -v -u youruser -P yourpassword- Notice how the logs of Fabio contain many rows of this:
Dec 14 17:00:22 SERVER_NAME fabio[29578]: 2021/12/14 17:00:22 [WARN]: tcp: tls: first record does not look like a TLS handshake- Notice how the mosquitto logs look like this:
1639501352: New connection from FABIO_IP_ADDR on port 1883.
1639501352: Socket error on client <unknown>, disconnecting.- Now attempt to connect with unencrypted MQTT:
mosquitto_sub -h mqtt.yourdomain.com -p 1883 -t '#' -v
# Or, with authentication setup:
mosquitto_sub -h mqtt.yourdomain.com -p 1883 -t '#' -v -u youruser -P yourpassword- Notice how it connects successfully. Try publishing a message:
mosquitto_pub -h mqtt.yourdomain.com -p 8883 -t 'some/topic' -m "a test message" -v
# Or, with authentication setup:
mosquitto_pub -h mqtt.yourdomain.com -p 8883 -t 'some/topic' -m "a test message" -v -u youruser -P yourpasswordAdditional system info:
uname -a:Linux SERVER_NAME 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linuxfabio -v:1.5.15- Mosquitto version: 1.5.7
Source: fabiolb/fabio