Open
Description
For example, connecting to IP 1.2.3.4 yields the following error:
Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames: Host: localhost. is not in the cert's altnames: IP Address:1.2.3.4
at Object.checkServerIdentity (tls.js:250:17)
at TLSSocket.onConnectSecure (_tls_wrap.js:1098:27)
at TLSSocket.emit (events.js:198:13)
at TLSSocket._finishInit (_tls_wrap.js:666:8)
Since TLS support was added to pg, it has passed a socket to tls.connect
, meaning the host should be passed separately (it isn't). It passed servername
, which is not valid for IP addresses and was removed in #1890.
The reason that the error message above uses localhost can be found in _tls_wrap.js
.
I found a previous issue (#2178) about this but it wasn't fixed. The correct fix is to always pass host
. The documentation for options.socket
says:
If this option is specified, path, host and port are ignored, except for certificate validation.
I can submit a PR but I will need help if you'd like a test for this.