ALPN (negociación del protocolo de la capa de aplicación)

ALPN (negociación de protocolo de capa de aplicación) es una extensión de TLS que permite la negociación de protocolo de capa de aplicación basada en una conexión segura. ALPN admite la negociación de cualquier protocolo de capa de aplicación. En la actualidad, la aplicación es como máximo negociación HTTP2. Los navegadores principales actuales solo admiten HTTP / 2 basado en la implementación HTTPS, porque el navegador se basa en el protocolo ALPN para determinar si el servidor admite el protocolo HTTP2.

Principios de negociación.

 En la fase Say Hello de TLS, se agrega la negociación del protocolo de capa de aplicación, como se muestra en la siguiente figura:

 Podemos usar WireShark para capturar paquetes y analizar el proceso de interacción del protocolo de negociación ALPN.

  • Cuando el navegador realiza una conexión SSL, la primera vez que se envía el paquete de saludo de cliente, la versión admitida por el navegador se transporta en el campo de extensión, donde h2 representa que el navegador admite el protocolo http2.

    

  •  Cuando el servidor devuelve el paquete Server Hello, si el servidor admite http 2, devolverá h2. Si no lo hace, seleccione un protocolo que admita de la lista de protocolos admitidos por el cliente, generalmente http / 1.1.

 

 Tanto el navegador como el servidor admiten la negociación ALPN, que es el requisito previo para usar HTTP / 2.

  • Los teléfonos Android son compatibles con ALPN desde la versión 5.0. El código fuente OkHttp utiliza el siguiente código para determinar si el teléfono es compatible con ALPN:
  public  static  boolean supportsAlpn () {
     if (Security.getProvider ("GMSCore_OpenSSL")! = null ) {
       return  true ; 
    } else {
       intente { 
        Class.forName ( "android.net.Network"); // Clase arbitraria agregada en Android 5.0. 
        volver  verdadero ; 
      } catch (ClassNotFoundException ignorado) {} 
    } 
    return  false ; 
  }
  •  La mayoría de los servidores web confían en la biblioteca OpenSSL para proporcionar servicios https. El hecho de que ALPN sea o no compatible depende completamente de la versión de OpenSSL utilizada. OpenSSL versión 1.0.2 solo comenzó a admitir ALPN.

Supongo que te gusta

Origin www.cnblogs.com/rainboy2010/p/12686843.html
Recomendado
Clasificación