grpc-js: secure channel to an IP address fails on Node 25+ (servername set to IP literal)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 75/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- grpc, node.js, typescript
- Ambito
- backend-api-design, networking
Direzione di ricerca
Inizia in channel-credentials.ts, in corrispondenza di getConnectionOptions, poi verifica come SecureConnectorImpl.connect gestisce gli errori di tls.connect. La riproduzione nell’issue mostra il fallimento con una destinazione IP e il successo con un nome host; conferma il comportamento con quella riproduzione su Node 26. Il lavoro è completato quando le destinazioni IP si connettono senza passare un IP letterale come servername, mentre i nomi host continuano a connettersi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem description
Credentials from createSsl() cannot connect to a target given by IP address on Node 25 and later.
getConnectionOptions in channel-credentials.ts sets servername = remoteHost unconditionally (since #1466). Node 25 made DEP0123 End-of-Life (nodejs/node#58533), so tls.connect now throws instead of warning when servername is an IP literal:
ERR_INVALID_ARG_VALUE: The property 'options.servername' Setting the TLS ServerName to an IP address is not permitted.. Received '127.0.0.1'
The throw happens inside the connect promise in SecureConnectorImpl.connect, so the caller only ever sees 14 UNAVAILABLE: No connection established. Hostname targets work. Node 26 is the current LTS, so this now hits default installs.
Reproduction steps
Any TLS gRPC server listening on 127.0.0.1:PORT, then:
const grpc = require('@grpc/grpc-js');
const client = new grpc.Client('127.0.0.1:PORT',
grpc.credentials.createSsl(null, null, null, { rejectUnauthorized: false }));
client.waitForReady(Date.now() + 2000, err => console.log(err ? err.message : 'connected'));
Node 24: connected
Node 26: Failed to connect before the deadline
Wrapping tls.connect to log its options shows servername: '127.0.0.1' on every attempt, and the synchronous ERR_INVALID_ARG_VALUE throw.
Environment
- Linux 7.0, amd64
- Node v26.13.0 (works on v24.17.0)
- fnm
- @grpc/grpc-js 1.14.7, same code on master
Additional context
Node's own https agent already skips SNI for IP literals. Same one-line change here:
if (!net.isIP(remoteHost)) {
connectionOptions.servername = remoteHost;
}
- Lingua principale
- TypeScript
- Stelle
- 4.8k
- Fork
- 720
- Merge medio
- 2g 11h
- PR unite (30g)
- 7
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di grpc/grpc-node
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
grpc/grpc-node#3112 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
CompressionFilter’s IdentityHandler.writeMessage calls Buffer-only .copy() on caller-provided messageForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
package: @grpc/grpc-js
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
grpc/grpc-node#2993 · 3 commenti · 5 reazioni ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di grpc/grpc-node
Issue simili
-
Add: ESP 2 ROApertaapproved check:passed streams:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
ipaas: Configure form shows "Deploy to apply." and "Overrides selected Link" when they don't applyAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
wso2/integration-control-plane#1118 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
UTDNebula/utd-notebook#311 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno