Actualizado (2 de septiembre de 2020)

Ha pasado un año desde que publiqué esta historia. Desde entonces Ubuntu 20.04 fue lanzado y la versión más nueva de OpenSSL fue publicada el 6 de agosto de 2020. Básicamente lo único que cambié en esta historia fue la letra que hace referencia a la serie OpenSSL 1.1.1, es decir, cambiar la letra ‘c’ de la versión original por la letra ‘g’ en los comandos de la actualizada. Aunque estos cambios se reflejan en los comandos, las imágenes que ilustran los resultados de estos comandos permanecen inalteradas. Disfrute de su lectura!

Si utiliza el protocolo SSL/TLS en su aplicación, o está a punto de hacerlo, la recomendación es que mantenga actualizado OpenSSL. Esto es especialmente cierto no sólo por el papel que juega en la emisión de certificados, sino también después de las lecciones aprendidas con Heartbleed.

Ubuntu 20.04.1 (la última actualización 20.04 a partir de septiembre de 2020) viene con «OpenSSL 1.1.1 31 Mar 2020» instalado y Ubuntu 18.04.03 (la última actualización 18.04 a partir de agosto de 2019) viene con «OpenSSL 1.1.1 11 Sep 2018» enviado. En este momento la última versión de la serie OpenSSL 1.1.1 es ‘1.1.1g’ enviada el 6 de agosto. 2020.

En esta historia guiaré al lector sobre cómo proceder con esta actualización sin romper ninguna interoperabilidad con las aplicaciones existentes que dependen de OpenSSL.

Supongo que el lector está familiarizado con los comandos bash y, por supuesto, la actualización será en una caja Ubuntu 20.04 o 18.04. Aunque no puedo ver ninguna razón por la que este procedimiento no debería funcionar en Ubuntu 16.04 (si lo hace por favor hágamelo saber), no fue probado.

Lo primero que hay que hacer es comprobar qué versión está instalada:

$ openssl version

En mi caso «OpenSSL 1.1.1 20 Mar 2020» fue el resultado.

Paso 1: Descargar openssl-1.1.1g desde aquí y guárdalo en el directorio ~/Downloads:

$ cd ~/Downloads
$ wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz

Paso 2: Comprueba si hay corrupción comparando la suma de comprobación SHA256 de aquí con la suma de comprobación calculada del archivo zip descargado:

$ wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz.sha256
$ echo "$(cat openssl-1.1.1g.tar.gz.sha256) openssl-1.1.1g.tar.gz" | sha256sum --check

En la imagen de abajo los comandos anteriores están subrayados en amarillo y el resultado de la suma de comprobación (OK en este caso) está subrayado en verde:

Paso 3: Comprobar la firma del archivo zip descargado

Antes de instalar el contenido del archivo zip descargado verificaremos su firma, utilizando GnuPG que viene con Ubuntu (se puede confiar en él como se menciona en GnuPG).

En la página de descargas de OpenSSL encontramos la siguiente información : «Las claves PGP para las firmas están disponibles en la página de OMC. Los miembros actuales que firman las versiones son Richard Levitte y Matt Caswell». Siguiendo el enlace en la página de la OMC llegamos a las claves públicas de los miembros. El siguiente paso, por tanto, es descargar las claves requeridas (una en levitte.txt y la otra en caswell.txt) e importarlas a la base de datos de GnuPG. Usando curl:

$ curl 'http://pool.sks-keyservers.net:11371/pks/lookup?op=get&search=0x7953AC1FBC3DC8B3B292393ED5E9E43F7DF9EE8C' > levitte.txt
$ curl 'http://pool.sks-keyservers.net:11371/pks/lookup?op=get&search=0x8657ABB260F056B1E5190839D9C4D26D0E604491' > caswell.txt

Para confiar en estas firmas es una buena práctica verificar el certificado del dominio (figura inferior). Utilizando la pestaña de seguridad de Google Chrome dentro de las herramientas de desarrollador, se puede validar que el emisor «Let’s Encrypt Authority X3» (de confianza para el navegador) emitió el certificado al dominio www.openssl.org, lo que significa que se trata de un certificado de Validación de Dominio, lo que permite que cualquiera pueda confiar en las firmas descargadas.

Las dos claves se importan y se listan como sigue:

$ gpg --import caswell.txt
$ gpg --import levitte.txt
$ gpg --list-keys

La siguiente ilustración contiene el resultado de los comandos anteriores que están subrayados en amarillo:

Deja una respuesta

Tu dirección de correo electrónico no será publicada.