Hace poco veíamos cómo solicitar un certificado digital para SSL usando un algoritmo de hash moderno, y no el que se usa por defecto en IIS.

En esta ocasión vamos a ver cómo podemos modificar en Windows Server, y por lo tanto en Internet Information Server, el orden de preferencia de los diferentes conjuntos de algoritmos de cifrado disponibles. De este modo nos cerciorarnos de que los más modernos y seguros van primero en la lista y por lo tanto se les da preferencia a la hora de cifrar las comunicaciones, obteniendo un servidor más seguro.

La cosa es bastante sencilla. Sólo hay que saber en dónde tocar.

Lo primero que tenemos que hacer es abrir el editor de políticas de seguridad local del servidor. Para ello puedes intentar escribir:

gpedit.smc

en una línea de comandos o en el diálogo de ejecutar (Windows+R), pero lo más probable es que te aparezca este mensaje:

gpedit-noadmin

El motivo es que necesitas usar una cuenta con privilegios elevados para poder cambiar los ajustes de seguridad. Así que lo mejor es que busques en tus archivos de programa el programa "gpedit.msc", pulses con el botón derecho y escojas "Ejecutar como administrador":

gpedit-admin

OJO: si no escribes exactamente el nombre completo, incluyendo la extensión, es probable que no te lo muestre la búsqueda.

La captura anterior es en Windows Server 2012. En otros sistemas seguramente te aparecerá en la búsqueda también (escribiéndolo entero), pero sino puedes abrir una línea de comandos como administrador y escribir el mismo comando "gpedit.msc" para lanzarlo.

Vale. Una vez lanzado navega hasta el nodo "Plantillas administrativas·Red·Ajustes de configuración de SSL" en la máquina local, como muestra esta figura (todos mis sistemas están instalados en inglés, por eso las capturas las ves en este idioma):

gpedit-sslcipher

En el nodo verás que la única opción es la mostrada en la captura: "Orden de los grupos de cifrado SSL" (creo que esa es la traducción).

Haz doble clic encima y verás que por defecto no está habilitada, es decir, usa los valores por omisión.

Habilítala y verás que se muestran en un cuadro de texto bastante pequeño una serie de siglas:

Orden-Protocolos-SSL-1

Éstas son las mismas que hay en la lista de la derecha, que es la explicación del ajuste, pero en el órden definido por defecto para el sistema.

El cuadro de texto es muy ridículo para lo larga que es la información que contiene y es una pena que no hayan puesto un cuadro de texto grande con todo el espacio que hay. Así que pulsa en el texto, selecciónalo entero y cópialo y pégalo en un bloc de notas:

Orden-Protocolos-SSL-2

Ahora cambia el orden de los protocolos para usar los más seguros al principio. Por ejemplo, el que viene por defecto de primero en Windows Server 2008 R2 (que es de donde he sacado la captura anterior) es:

TLS_RSA_WITH_AES_128_CBC_SHA256

Eso significa que se usará TLS v1.2 con cifrado AES de 128 bits y SHA256 para los hashes y encadenado de bloques de cifrado (Cipher Block Chaining: CBC). Lo cual no está nada mal y de hecho AES con claves de 128 es un protocolo razonablemente seguro para la mayoría de los usos civiles(de hecho el gobierno de EEUU aprueba 128 bits hasta el nivel de "Secreto", imponiendo claves de 192 o 256 bits en documentos clasificados como "Top Secret"). Y desde luego es seguro para cualquier uso que le vayamos a dar uno de nosotros, pobres mortales. No obstante algunos navegadores, como Chrome prefieren que utilices un protocolo más seguro o más moderno, por lo que puede ser recomendable que cambies este ajuste.

Por ejemplo, vamos a poner de primero el mismo grupo de algoritmos de cifrado pero usando AES con claves de 256 bits. Son un tanto más lentas (un 40%) que las de 128, pero mucho más seguras todavía.

Selecciona los algoritmos que están resaltados en la captura anterior, y muévelos a la primera posición de la lista con cuidado de no dejarte ninguna coma por ahí:

Orden-Protocolos-SSL-3

Ahora copia todo el contenido del bloc de notas y pégalo en el cuadro de texto del editor de políticas y acepta.

Tendrás que reiniciar el servidor para que los cambios surtan efecto, pero a partir de ese momento tu servidor (y por lo tanto tu IIS a través de SSL), usará esa versión más segura del algoritmo de encriptación avanzada AES para cifrar las comunicaciones.

La configuración ideal

De hecho lo anterior es seguro y no tendrá problema pero el algoritmo preferido por Google Chromey los navegadores modernos por su seguridad es TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256., y es el que se podría poner de primero con lo explicado anteriormente.

Esto implica usar AES de 128 bits y SHA-2 de 256, pero utilizando intercambio de claves mediante el método de curvas elípticas de Diffie-Hellman (ECDHE) en lugar del más común CBC que hemos visto antes.

Para poder usarlo tendríamos que tener un certificado firmado con ECDSA, para lo cual deberemos solicitarlo usando algún algoritmo de curva elíptica en la configuración del proveedor de servicios criptográficos en los ajustes que expliqué en mi anterior post. Valdrá cualquiera que comience por "ECDSA_", pero el de 256 bits será más que suficiente.

A mayores debemos tener en cuenta que los navegadores antiguos (por ejemplo Internet Explorer 7 que venía con Windows XP) no soportan criptografía de curva elíptica por lo que no serían capaces de acceder a nuestro sitio web. Por ello si es importante un soporte lo más amplio posible de navegadores, incluso estos viejos, mejor quedarse con el ajuste anterior que, insisto, es más que suficientemente seguro.

¡Espero que te sea útil!

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA