Http request node tls

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.)

Share the output returned by the last node

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

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.

2 Likes

This is helpful

you’re welcome

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.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.