@@ -120,14 +120,15 @@ of an application. The `--tls-cipher-list` switch should by used only if
120120absolutely necessary.
121121
122122
123- ## NPN and SNI
123+ ## ALPN, NPN and SNI
124124
125125<!-- type=misc -->
126126
127- NPN (Next Protocol Negotiation) and SNI (Server Name Indication) are TLS
127+ ALPN (Application-Layer Protocol Negotiation Extension), NPN (Next
128+ Protocol Negotiation) and SNI (Server Name Indication) are TLS
128129handshake extensions allowing you:
129130
130- * NPN - to use one TLS server for multiple protocols (HTTP, SPDY)
131+ * ALPN/ NPN - to use one TLS server for multiple protocols (HTTP, SPDY, HTTP/2 )
131132 * SNI - to use one TLS server for multiple hostnames with different SSL
132133 certificates.
133134
@@ -305,7 +306,13 @@ server. If `socket.authorized` is false, then
305306` socket.authorizationError ` is set to describe how authorization
306307failed. Implied but worth mentioning: depending on the settings of the TLS
307308server, you unauthorized connections may be accepted.
308- ` socket.npnProtocol ` is a string containing selected NPN protocol.
309+
310+ ` socket.npnProtocol ` is a string containing the selected NPN protocol
311+ and ` socket.alpnProtocol ` is a string containing the selected ALPN
312+ protocol, When both NPN and ALPN extensions are received, ALPN takes
313+ precedence over NPN and the next protocol is selected by ALPN. When
314+ ALPN has no selected protocol, this returns false.
315+
309316` socket.servername ` is a string containing servername requested with
310317SNI.
311318
@@ -429,6 +436,8 @@ Construct a new TLSSocket object from existing TCP socket.
429436
430437 - ` NPNProtocols ` : Optional, see [ ` tls.createServer() ` ] [ ]
431438
439+ - ` ALPNProtocols ` : Optional, see [ tls.createServer] [ ]
440+
432441 - ` SNICallback ` : Optional, see [ ` tls.createServer() ` ] [ ]
433442
434443 - ` session ` : Optional, a ` Buffer ` instance, containing TLS session
@@ -460,8 +469,9 @@ The listener will be called no matter if the server's certificate was
460469authorized or not. It is up to the user to test ` tlsSocket.authorized `
461470to see if the server certificate was signed by one of the specified CAs.
462471If ` tlsSocket.authorized === false ` then the error can be found in
463- ` tlsSocket.authorizationError ` . Also if NPN was used you can check
464- ` tlsSocket.npnProtocol ` for negotiated protocol.
472+ ` tlsSocket.authorizationError ` . Also if ALPN or NPN was used - you can
473+ check ` tlsSocket.alpnProtocol ` or ` tlsSocket.npnProtocol ` for the
474+ negotiated protocol.
465475
466476### tlsSocket.address()
467477<!-- YAML
@@ -684,6 +694,12 @@ Creates a new client connection to the given `port` and `host` (old API) or
684694 where first byte is next protocol name's length. (Passing array should
685695 usually be much simpler: ` ['hello', 'world'] ` .)
686696
697+ - ` ALPNProtocols ` : An array of strings or ` Buffer ` s containing
698+ supported ALPN protocols. ` Buffer ` s should have following format:
699+ ` 0x05hello0x05world ` , where the first byte is the next protocol
700+ name's length. (Passing array should usually be much simpler:
701+ ` ['hello', 'world'] ` .)
702+
687703 - ` servername ` : Servername for SNI (Server Name Indication) TLS extension.
688704
689705 - ` checkServerIdentity(servername, cert) ` : Provide an override for checking
@@ -925,6 +941,12 @@ automatically set as a listener for the [`'secureConnection'`][] event. The
925941 - ` NPNProtocols` : An array or ` Buffer` of possible NPN protocols. (Protocols
926942 should be ordered by their priority).
927943
944+ - ` ALPNProtocols` : An array or ` Buffer` of possible ALPN
945+ protocols. (Protocols should be ordered by their priority). When
946+ the server receives both NPN and ALPN extensions from the client,
947+ ALPN takes precedence over NPN and the server does not send an NPN
948+ extension to the client.
949+
928950 - ` SNICallback(servername, cb)` : A function that will be called if client
929951 supports SNI TLS extension. Two argument will be passed to it: `servername`,
930952 and `cb`. `SNICallback` should invoke `cb (null , ctx )`, where `ctx` is a
0 commit comments