La negociación del protocolo de capa de aplicación ( ALPN ) es unaextensión de seguridad de la capa de transporte (TLS) que permite a la capa de aplicación negociar qué protocolo se debe realizar a través de una conexión segura de manera que se eviten viajes de ida y vuelta adicionales y cuál sea independiente de la capa de aplicación. protocolos. Se utiliza para establecerconexiones HTTP / 2 sin viajes de ida y vuelta adicionales (el cliente y el servidor pueden comunicarse a los puertos previamente asignados a HTTPS con HTTP / 1.1 y actualizar para usar HTTP / 2 o continuar con HTTP / 1.1 sin cerrar la conexión inicial).
Apoyo
ALPN es compatible con estas bibliotecas:
- GnuTLS desde la versión 3.2.0 lanzada en mayo de 2013 [1]
- MatrixSSL desde la versión 3.7.1 lanzada en diciembre de 2014 [2]
- Servicios de seguridad de red desde la versión 3.15.5 lanzada en abril de 2014 [3]
- OpenSSL desde la versión 1.0.2 lanzada en enero de 2015 [4]
- LibreSSL desde la versión 2.1.3 lanzada en enero de 2015 [5]
- mbed TLS (anteriormente PolarSSL) desde la versión 1.3.6 lanzada en abril de 2014 [6]
- s2n desde su lanzamiento público original en junio de 2015.
- wolfSSL (anteriormente CyaSSL) desde la versión 3.7.0 lanzada en octubre de 2015 [7]
- Go (en el paquete de biblioteca estándar crypto / tls) desde la versión 1.4 lanzada en diciembre de 2014 [8]
- JSSE en Java desde el lanzamiento de JDK 9 en septiembre de 2017, [9] actualizado a JDK 8 lanzado en abril de 2020 [10]
- Win32 SSPI desde que se lanzaron Windows 8.1 y Windows Server 2012 R2 el 18 de octubre de 2013 [11]
Historia
El 11 de julio de 2014, ALPN se publicó como RFC 7301 . ALPN reemplaza la extensión Next Protocol Negotiation (NPN). [12]
TLS False Start se deshabilitó en Google Chrome desde la versión 20 (2012) en adelante, excepto para los sitios web con la extensión NPN anterior. [13]
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 protocolo de enlace: Cliente Hola (1) Longitud: 141 Versión: TLS 1.2 (0x0303) Aleatorio: dd67b5943e5efd0740519f38071008b59efbd68ab3114587 ... Duración del ID de sesión: 0 Longitud de las suites de cifrado: 10 Cipher Suites (5 suites) 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 extensión ALPN: 12 Protocolo ALPN Longitud de la cuerda ALPN: 2 Próximo protocolo ALPN: h2 Longitud de la cuerda ALPN: 8 Próximo protocolo ALPN: http / 1.1
El '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 protocolo de enlace: servidor Hola (2) Longitud: 94 Versión: TLS 1.2 (0x0303) Aleatorio: 44e447964d7e8a7d3b404c4748423f02345241dcc9c7e332 ... Duración de la ID de sesión: 32 ID de sesión: 7667476d1d698d0a90caa1d9a449be814b89a0b52f470e2d ... Conjunto de cifrado: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) Método de compresión: nulo (0) Longitud de las 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 la cuerda ALPN: 2 Próximo protocolo ALPN: h2
Referencias
- ^ "gnutls 3.2.0" . Archivado desde el original el 31 de enero de 2016 . Consultado el 26 de enero de 2015 .
- ^ "MatrixSSL - Noticias" . 2014-12-04. Archivado desde el original el 14 de febrero de 2015 . Consultado el 26 de enero de 2015 .
- ^ "Notas de la versión NSS 3.15.5" . Red de desarrolladores de Mozilla . Mozilla . Consultado el 26 de enero de 2015 .
- ^ "Notas de la versión de OpenSSL 1.0.2" . El proyecto OpenSSL . El proyecto OpenSSL. 2015-01-22 . Consultado el 26 de enero de 2015 .
- ^ "LibreSSL 2.1.3 lanzado" . 2015-01-22 . Consultado el 26 de enero de 2015 .
- ^ "Descargar descripción general - PolarSSL" . 2014-04-11 . Consultado el 26 de enero de 2015 .
- ^ "WolfSSL Release Change Log" . 2015-10-26 . Consultado el 11 de septiembre de 2015 .
- ^ "Notas de la versión de Go 1.4" . 2014-12-10 . Consultado el 28 de noviembre de 2017 .
- ^ "JEP 244: Extensión de negociación de protocolo de capa de aplicación TLS" . 2017-08-07 . 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" . 2020-04-30 . Consultado el 11 de junio de 2020 .
- ^ "Novedades de TLS / SSL (Schannel SSP)" . Consultado el 30 de marzo de 2020 .
- ^ Langley, Adam. "» NPN y ALPN " . Consultado el 2 de abril de 2013 .
- ^ Langley, Adam. "Fallo de inicio falso (11 de abril de 2012)" . Consultado el 25 de septiembre de 2013 .
enlaces externos
- IANA mantiene el registro de ID de protocolo ALPN como una extensión TLS.
- draft-agl-tls-nextprotoneg-04 (borrador NPN) (última actualización: mayo de 2012)
- RFC 7301 "Extensión de negociación de protocolo de capa de aplicación de seguridad de la capa de transporte (TLS)"