La negociación del protocolo de la capa de aplicación ( ALPN ) es una extensión de seguridad de la capa de transporte (TLS) que permite a la capa de aplicación negociar qué protocolo debe realizarse a través de una conexión segura de una manera que evite viajes de ida y vuelta adicionales y cuál sea independiente de la capa de aplicación. protocolos. 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 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).
ALPN es compatible con estas bibliotecas:
En enero de 2010, Google presentó el borrador del estándar IETF que describe la extensión TLS de negociación del próximo protocolo. [13] Esta extensión se utilizó para negociar conexiones SPDY experimentales entre Google Chrome y algunos de los servidores de Google. A medida que SPDY evolucionó, NPN fue reemplazada por ALPN.
El 11 de julio de 2014, ALPN se publicó como RFC 7301. ALPN reemplaza la extensión Next Protocol Negotiation (NPN). [14]
TLS False Start se deshabilitó en Google Chrome desde la versión 20 (2012) en adelante, excepto en los sitios web con la extensión NPN anterior. [15]
ALPN es una extensión TLS que se envía en el protocolo de enlace TLS inicial 'Cliente Hola' 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 ... Longitud de ID de sesión : 0 Longitud de conjuntos de cifrado : 10 conjuntos de cifrado ( 5 conjuntos ) Longitud de métodos de compresión : 1 Longitud de métodos de compresión ( 1 método ) Longitud de extensiones : 90 [ otras extensiones omitidas ] Extensión : application_layer_protocol_negotiation ( len = 14 ) Tipo : application_layer_protocol_negotiation ( 16 ) Longitud : 14 ALPN Longitud de la extensión : 12 ALPN Protocolo Longitud de la cadena ALPN : 2 ALPN Siguiente protocolo : h2 Longitud de la cadena ALPN : 8 ALPN Siguiente protocolo : http / 1 . 1
El 'Servidor Hola' 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 : 44 e447964d7e8a7d3b404c4748423f02345241dcc9c7e332 .. . ID de sesión Duració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 : nulo ( 0 ) Longitud de extensiones : 22 [ otras extensiones omitidas ] Extensión : application_layer_protocol_negotiation ( len = 5 ) Tipo : application_layer_protocol_negotiation ( 16 ) Longitud : 5 ALPN Longitud de extensión : 3 ALPN Longitud de la cadena ALPN : 2 ALPN Siguiente protocolo : h2