My HTTP Request node fails with a socket hang-up when calling an internal service that enforces specific TLS versions. Postman works from my machine, but running in Docker cannot establish the handshake. Is this a Node.js TLS stack limitation ?
Describe the problem/error/question
What is the error message (if any)?
Please share your workflow
(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)
The HTTP Request node uses the Node.js runtime TLS implementation, so its supported ciphers and TLS versions depend on the Node version inside your n8n container.
Things to check:
The Node.js version used by your n8n image.
Whether the target service requires TLS 1.3 or a restricted cipher suite.
Custom CA certificates, mount them and reference them via NODE_EXTRA_CA_CERTS.
If the service uses an internal CA, the container will not trust it by default, which results in handshake termination.
Yeah this is a Node.js TLS thing, Postman uses its own TLS stack so it’ll behave differently. Add NODE_OPTIONS=--tls-min-v1.0 (or whatever version your service needs) as an env var in your Docker compose and that should sort the handshake out. If the service also uses an internal CA you’ll need NODE_EXTRA_CA_CERTS pointed at the cert file mounted into the container.
Yeah this is almost certainly OpenSSL 3 in the newer Node.js versions that n8n’s Docker image ships with, it dropped support for a bunch of legacy ciphers and TLS versions that Postman still handles fine. Try adding NODE_OPTIONS="--tls-min-v1.0" to your container’s environment variables, or if the service uses really old ciphers NODE_OPTIONS="--tls-cipher-list=DEFAULT@SECLEVEL=0" should get you past the handshake failure.