Articulo de referencia

Negociación de protocolos de capa de aplicación

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é prot...

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

El 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 : h2

Referencias

  1. "Aviso de lanzamiento de Dell BSAFE Micro Edition Suite 5.0" . Consultado el 18 de octubre de 2022 .
  2. "gnutls 3.2.0" . Archivado del original el 31/01/2016 . Consultado el 26/01/2015 .
  3. "MatrixSSL - Noticias" . 4 de diciembre de 2014. Archivado del original el 14 de febrero de 2015. Consultado el 26 de enero de 2015 .
  4. "Notas de la versión NSS 3.15.5" . Mozilla Developer Network . Mozilla . Consultado el 26 de enero de 2015 .
  5. "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 .
  6. "LibreSSL 2.1.3 lanzado" . 22-01-2015 . Consultado el 26-01-2015 .
  7. "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 .
  8. "wolfSSL Release Change Log". 2015-10-26. Retrieved 2015-09-11.
  9. "Go 1.4 Release Notes". 2014-12-10. Retrieved 2017-11-28.
  10. "JEP 244: TLS Application-Layer Protocol Negotiation Extension". 2017-08-07. Retrieved 2018-08-29.
  11. "Release Note: TLS Application-Layer Protocol Negotiation Extension". 2020-04-30. Retrieved 2020-06-11.
  12. "What's New in TLS/SSL (Schannel SSP)". 31 August 2016. Retrieved 2020-03-30.
  13. "ClientConfig in rustls::client - Rust". docs.rs. Retrieved 2026-01-11.
  14. Langley, A. (January 20, 2010). "Transport Layer Security (TLS) Next Protocol Negotiation Extension". IETF Datatracker.
  15. Langley, Adam. "» NPN and ALPN". Retrieved 2 April 2013.
  16. Langley, Adam. "False Start's Failure (11 Apr 2012)". Retrieved 25 September 2013.
  • The registry of ALPN protocol IDs is maintained by IANA as a TLS extension.
  • draft-agl-tls-nextprotoneg-04 (NPN draft) (last updated: May 2012)
  • RFC 7301 "Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension"