Hace un par de publicaciones atrás, explicaba cómo configurar un certificado SSL autofirmado para la administración de WordPress, y señalaba la dificultad de comprobar la integridad de la comunicación entre el cliente y el servidor debido a que un certificado autofirmado no está validado por una autoridad de certificación comercial, como las que se incluyen entre los certificados aceptados por los navegadores más populares.
Aunque por una parte esto podría entenderse como una ventana abierta para ataques de man-in-the-middle, lo cierto es que es posible eliminar el riesgo de este tipo de ataques al utilizar un certificado autofirmado siguiendo un procedimiento relativamente sencillo.
Lo importante es comprender una diferencia fundamental en la forma en que funciona un certificado autofirmado con relación a uno comprado de una autoridad certificadora. Con ambos tipos, la comunicación entre el cliente y el servidor está encriptada, pero la manera en que validan la autenticidad del receptor del mensaje es fundamentalmente distinta.
¿Cómo se comprueba la identidad del sitio en un ceritificado autofirmado?
En un certificado adquirido de una autoridad de certificación, es ésta es la que valida la identidad del servidor, ya que aplica su firma sobre la petición de certificación que luego el navegador puede comprobar verificando su propia base de datos de certificados raíz.
De este modo, el navegador confía en que un sitio es quien dice ser ya que el certificado que éste te ofrece tiene una firma que corresponde con la firma del certificado raíz que ha verificado su identidad.
En un certificado autofirmado no existe un tercero que valide el certificado, y por eso al intentar conectarnos por primera vez nos muestra la advertencia de “Esta conexión no es de confianza”.
Sin embargo la validación de un tercero no es estrictamente necesaria para aseverar la seguridad de la conexión, ya que se puede reemplazar por una cadena de confianza de persona a persona — en lugar de delegar la verificación de la identidad a un tercero, tienes que confiar en que la persona que te entrega el certificado pueda validar que corresponde al sitio del que dice ser.
Es decir, quien te entrega el certificado (o tú mismo, si fuiste quien lo creó) es quien te afirma que es un certificado válido para conectarse a un sitio.
Para poder asegurar que tu conexión con el sitio va a estar protegida, el paso final es instalar el certificado autofirmado en tu navegador, de modo que incluso en el primer intento de conexión, pueda verificar que el sitio al que supuestamente te estás conectando, corresponda realmente al sitio que te quieres conectar (es decir, eliminar el factor MITM).
Instalar el certificado autofirmado
En primer lugar, debes distribuír el certificado a las personas que se van a conectar al sitio en cuestión. Obviamente debes preferir un método seguro de hacerlo, ya sea personalmente o a través de algún servicio para compartir archivos. Si lo vas a hacer por correo electrónico, lo ideal sería que fuera firmado con PGP.
Si usas Firefox, debes ingresar a Preferencias → Avanzado → Certificados. Clickea el botón de “Certificados” y luego “Importar”.
Al seleccionar el archivo del certificado, se mostrará un diálogo que te preguntará si deseas confiar en el certificado. Debes seleccionar la opción de Confiar en esta CA para identificar sitios web y finalmente Aceptar.
Con Chrome, el proceso sigue los mismos pasos.
Con esto el certificado ya queda instalado y te puedes conectar seguramente al sitio web.