TLS 1.2 compatibilidad con versiones anteriores.

1

La pregunta es si el cliente solo admite TLS 1.1 y el servidor tiene habilitado TLS1.2 o SSL 3.0. ¿Volverá a SSL 3.0 porque el servidor no tiene TLS 1.1 habilitado?

    
pregunta gsb005 09.09.2016 - 17:05
fuente

1 respuesta

7

En el protocolo de enlace SSL / TLS, todo va bien: el cliente envía una versión máxima admitida ; luego el servidor elige la versión que se usará y la envía al cliente.

El servidor, por definición, no elegirá una versión de protocolo que no admita. El servidor intentará seleccionar una versión que admita y que también sea compatible con el cliente; sin embargo, el servidor solo tiene información parcial sobre lo que el cliente admite, ya que solo recibió una "versión máxima admitida". Si el cliente dice "hasta TLS 1.1", entonces el servidor sabe que el cliente es compatible con TLS 1.1 (o menos reclamos) pero no TLS 1.2; En ese momento, el servidor desconoce si el cliente admitiría o aceptaría TLS 1.0 o versiones de protocolo anteriores.

En su situación prevista, si el servidor solo admite TLS 1.2 y SSL 3.0, solo seleccionará TLS 1.2 o SSL 3.0. Si el cliente dice "Admito hasta TLS 1.1", entonces el servidor no seleccionará TLS 1.2 (ya que, en este punto, el servidor sabe que el cliente no lo admite); por lo tanto, elegirá SSL 3.0, que es su única otra opción. El cliente, al recibir esa respuesta del servidor, puede muy bien decir "SSL 3.0? ¿Qué tipo de servidor antiguo es ese? ¿Por qué no usar herramientas de pedernal mientras estamos en eso?" y se niegan a seguir comunicando.

Básicamente, para que el protocolo de enlace tenga éxito, debe debe haber una versión de protocolo compatible con el cliente y el servidor. Si el cliente admite solo TLS 1.1, y el servidor admite solo TLS 1.2 y SSL 3.0, entonces no existe una versión de protocolo común y las comunicaciones no se realizarán.

Ahora puede haber situaciones extrañas en las que el cliente y el servidor no se dan cuenta de que tienen una versión que ambos admiten. Por ejemplo, el cliente, por alguna razón, admite TLS 1.0 y 1.2, pero no TLS 1.1; y el servidor admite TLS 1.0 y 1.1, pero no TLS 1.2. En tal situación, el cliente afirmará que admite "hasta TLS 1.2", y el servidor, que solo conoce TLS 1.0 y 1.1, elegirá TLS 1.1, que el cliente rechazará.

En la práctica, tales situaciones no ocurren, porque las implementaciones no tienen "agujeros" en el rango de versiones de protocolo que admiten. Si un cliente o servidor admite las versiones X y Y , entonces también admitirá todas las versiones entre X y Y . No tiene mucho sentido admitir TLS 1.0 y TLS 1.2, pero no TLS 1.1.

    
respondido por el Thomas Pornin 09.09.2016 - 17:39
fuente

Lea otras preguntas en las etiquetas