2010-01-05 13 views
5

Tenemos una discusión comprometida (pero amigable) entre compañeros de trabajo sobre la duración de la sesión SSL subyacente a una comunicación https.Vida útil de la sesión SSL en https

Cuando establezco una conexión https a un servidor usando un navegador normal, el ssl subyacente crea una sesión (incluido un secreto compartido) utilizando cifrado asimétrico, el resto de la comunicación se cifra mediante encriptación simétrica (más rápida).

La pregunta es: ¿En las siguientes solicitudes https (haga clic en un enlace) al mismo servidor, se vuelve a utilizar la sesión ssl anterior, evitando la sobrecarga del cifrado asimétrico para establecer una clave de sesión? ¿O es necesario un nuevo apretón de manos ssl encriptado asimétrico para establecer una sesión de SSL?

O para decirlo de otra manera: ¿una sesión SSL permanece activa entre las solicitudes https, o finaliza con el final de la solicitud https?

Dado que somos un grupo de Nitpicks aquí, se apreciará una referencia a alguna fuente de autoría.

Respuesta

1

Véase la sección 2.2 del http://www.ietf.org/rfc/rfc2818.txt y la sección 8.1 del http://www.ietf.org/rfc/rfc2616.txt

En esencia, la sesión SSL se debe mantener mientras el cliente mantiene una conexión persistente.

Para obtener más información acerca de la ejecución de las conexiones persistentes en los navegadores populares ver http://en.wikipedia.org/wiki/HTTP_persistent_connection#Use_in_web_browsers

+0

es la sesión SSL utilizado en la creación de una nueva sesión HTTP? –

3

Si su navegador soporta sesión de reanudación y el servidor ha almacenado en caché la sesión, entonces usted puede ser capaz de continuar una sesión entre conexiones, soportes GnuTLS esto y se puede ver una demo aquí:

https://test.gnutls.org:5556/

+0

Ese servidor ya no está disponible. –

8

Probado esto con Chrome:

navegue hasta https://www.americanexpress.com. netstat muestra:

$ netstat -n -p tcp|grep 184.86.149.155 
tcp4  0  0 10.177.78.58.50311  184.86.149.155.443  ESTABLISHED 
tcp4  0  0 10.177.78.58.50310  184.86.149.155.443  ESTABLISHED 
tcp4  0  0 10.177.78.58.50309  184.86.149.155.443  ESTABLISHED 

Al navegar a otros enlaces en la página web, programas de netstat:

$ netstat -n -p tcp|grep 184.86.149.155 
tcp4  0  0 10.177.78.58.50311  184.86.149.155.443  ESTABLISHED 
tcp4  0  0 10.177.78.58.50310  184.86.149.155.443  ESTABLISHED 
tcp4  0  0 10.177.78.58.50309  184.86.149.155.443  ESTABLISHED 

La sesión se mantuvo viva. Al cerrar la pestaña del navegador, y vuelto a abrir la pestaña, otra conexión se abrió:

$ netstat -n -p tcp|grep 184.86.149.155 
tcp4  0  0 10.177.78.58.50398  184.86.149.155.443  ESTABLISHED 
tcp4  0  0 10.177.78.58.50311  184.86.149.155.443  ESTABLISHED 
tcp4  0  0 10.177.78.58.50310  184.86.149.155.443  ESTABLISHED 
tcp4  0  0 10.177.78.58.50309  184.86.149.155.443  ESTABLISHED 

Al parecer, los navegadores modernos utilizan los mismos tiempos de espera de mantenimiento de conexión como http. Estos tiempos de espera se pueden ver aquí:

http://gabenell.blogspot.com/2010/11/connection-keep-alive-timeouts-for.html

Cuestiones relacionadas