La negociación de protocolos de capa de aplicación ( ALPN ) es una extensión de la seguridad de la capa de transporte (TLS) que permite a la capa de aplicación negociar qué protocolo debe utilizarse a través de una conexión segura, evitando así viajes de ida y vuelta adicionales y de forma independiente de los protocolos de la capa de aplicación. Se utiliza para establecer conexiones HTTP/2 sin viajes de ida y vuelta adicionales (el cliente y el servidor pueden comunicarse a través de dos puertos previamente asignados a HTTPS con HTTP/1.1 y actualizarse para usar HTTP/2 o continuar con HTTP/1.1 sin cerrar la conexión inicial).
Apoyo
ALPN es compatible con las siguientes bibliotecas:
- Suite BSAFE Micro Edition desde la versión 5.0 [ 1 ]
- GnuTLS desde la versión 3.2.0 publicada en mayo de 2013 [ 2 ]
- MatrixSSL desde la versión 3.7.1 publicada en diciembre de 2014 [ 3 ]
- Servicios de seguridad de red desde la versión 3.15.5 publicada en abril de 2014 [ 4 ]
- OpenSSL desde la versión 1.0.2 publicada en enero de 2015 [ 5 ]
- LibreSSL desde la versión 2.1.3 publicada en enero de 2015 [ 6 ]
- mbed TLS (anteriormente PolarSSL) desde la versión 1.3.6 publicada en abril de 2014 [ 7 ]
- s2n desde su lanzamiento público original en junio de 2015.
- wolfSSL (anteriormente CyaSSL) desde la versión 3.7.0 publicada en octubre de 2015 [ 8 ]
- Go (en el paquete crypto/tls de la biblioteca estándar) desde la versión 1.4 publicada en diciembre de 2014 [ 9 ]
- JSSE en Java desde JDK 9 lanzado en septiembre de 2017, [ 10 ] retroportado a JDK 8 lanzado en abril de 2020 [ 11 ]
- Win32 SSPI desde Windows 8.1 y Windows Server 2012 R2 se lanzaron el 18 de octubre de 2013 [ 12 ]
- Ruidos [ 13 ]
Historia
Siguiente negociación del protocolo
En enero de 2010, Google presentó un borrador de estándar IETF que describía la extensión TLS Next Protocol Negotiation (NPN). [ 14 ] Esta extensión se utilizó para negociar conexiones SPDY experimentales entre Google Chrome y algunos servidores de Google. A medida que SPDY evolucionó, NPN fue reemplazado por ALPN.
Negociación de protocolos de capa de aplicación
El 11 de julio de 2014, ALPN se publicó como RFC 7301. ALPN reemplaza la extensión Next Protocol Negotiation (NPN). [ 15 ]
TLS False Start se deshabilitó en Google Chrome a partir de la versión 20 (2012), excepto para los sitios web con la extensión NPN anterior. [ 16 ]
Ejemplo
ALPN es una extensión TLS que se envía en el protocolo de enlace TLS inicial 'Client Hello', y enumera los protocolos que admite el cliente (por ejemplo, el navegador web):
Tipo de handshake : Client Hello ( 1 ) Longitud : 141 Versión : TLS 1.2 ( 0x0303 ) Aleatorio : dd67b5943e5efd0740519f38071008b59efbd68ab3114587 ... Longitud del ID de sesión : 0 Longitud de los conjuntos de cifrado : 10 Conjuntos de cifrado ( 5 conjuntos ) Longitud de los métodos de compresión : 1 Métodos de compresión ( 1 método ) Longitud de las extensiones : 90 [ otras extensiones omitidas ] Extensión : application_layer_protocol_negotiation ( len = 14 ) Tipo : application_layer_protocol_negotiation ( 16 ) Longitud : 14 Longitud de la extensión ALPN : 12 Protocolo ALPN Longitud de la cadena ALPN : 2 Siguiente protocolo ALPN : h2 Longitud de la cadena ALPN : 8 Siguiente protocolo ALPN : http / 1 . 1El mensaje 'Server Hello' resultante del servidor web también contendrá la extensión ALPN, y confirma qué protocolo se utilizará para la solicitud HTTP:
Tipo de handshake : Server Hello ( 2 ) Longitud : 94 Versión : TLS 1.2 ( 0x0303 ) Aleatorio : 44 e447964d7e8a7d3b404c4748423f02345241dcc9c7e332 ... Longitud del ID de sesión : 32 ID de sesión : 7667476 d1d698d0a90caa1d9a449be814b89a0b52f470e2d ... Conjunto de cifrado : TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ( 0xc02f ) Método de compresión : null ( 0 ) Longitud de extensiones : 22 [ otras extensiones omitidas ] Extensión : application_layer_protocol_negotiation ( len = 5 ) Tipo : application_layer_protocol_negotiation ( 16 ) Longitud : 5 Longitud de extensión ALPN : 3 Protocolo ALPN Longitud de cadena ALPN : 2 Siguiente protocolo ALPN : h2Referencias
- ↑ "Aviso de lanzamiento de Dell BSAFE Micro Edition Suite 5.0" . Consultado el 18 de octubre de 2022 .
- ↑ "gnutls 3.2.0" . Archivado del original el 31/01/2016 . Consultado el 26/01/2015 .
- ↑ "MatrixSSL - Noticias" . 4 de diciembre de 2014. Archivado del original el 14 de febrero de 2015. Consultado el 26 de enero de 2015 .
- ↑ "Notas de la versión NSS 3.15.5" . Mozilla Developer Network . Mozilla . Consultado el 26 de enero de 2015 .
- ↑ "Notas de la versión 1.0.2 de OpenSSL" . El proyecto OpenSSL . 22 de enero de 2015. Archivado del original el 4 de septiembre de 2014. Consultado el 26 de enero de 2015 .
- ↑ "LibreSSL 2.1.3 lanzado" . 22-01-2015 . Consultado el 26-01-2015 .
- ↑ "Resumen de descargas - PolarSSL" . 11 de abril de 2014. Archivado del original el 9 de febrero de 2015. Consultado el 26 de enero de 2015 .
- ↑ "Registro de cambios de la versión de wolfSSL" . 26 de octubre de 2015. Consultado el 11 de septiembre de 2015 .
- ↑ "Notas de la versión 1.4 de Go" . 10 de diciembre de 2014. Consultado el 28 de noviembre de 2017 .
- ↑ "JEP 244: Extensión de negociación del protocolo de capa de aplicación TLS" . 7 de agosto de 2017. Consultado el 29 de agosto de 2018 .
- ↑ "Nota de la versión: Extensión de negociación del protocolo de capa de aplicación TLS" . 30 de abril de 2020. Consultado el 11 de junio de 2020 .
- ↑ "Novedades en TLS/SSL (Schannel SSP)" . 31 de agosto de 2016. Consultado el 30 de marzo de 2020 .
- ↑ "ClientConfig en rustls::client - Rust" . docs.rs. Consultado el 11 de enero de 2026 .
- ↑ Langley, A. (20 de enero de 2010). "Transport Layer Security (TLS) Next Protocol Negotiation Extension" . IETF Datatracker .
- ↑ Langley, Adam. «» NPN y ALPN» . Consultado el 2 de abril de 2013 .
- ↑ Langley, Adam. "False Start's Failure (11 de abril de 2012)" . Consultado el 25 de septiembre de 2013 .
Enlaces externos
- El registro de identificadores de protocolo ALPN es mantenido por IANA como una extensión de TLS.
- borrador-agl-tls-nextprotoneg-04 (borrador NPN) (última actualización: mayo de 2012)
- RFC 7301 "Extensión de negociación del protocolo de capa de aplicación de seguridad de la capa de transporte (TLS)"
- Seguridad de la capa de transporte
- Ingeniería de telecomunicaciones
- Arquitectura de Internet
- Rendimiento de la red