OpenSSL es una biblioteca criptográfica ampliamente utilizada que implementa los protocolos SSL y TLS para la comunicación segura en redes informáticas. OpenSSL es utilizado por muchos programas como el servidor web Apache, PHP, Postfix y muchos otros. OpenSSL ofrece soporte para varios algoritmos criptográficos como cifrados (AES, Blowfish, DES, IDEA, etc.), funciones hash criptográficas (MD5, MD4, SHA-1, SHA-2, etc.) y criptografía de clave pública (RSA, DSA, intercambio de claves Diffie-Hellman).
En este tutorial, os mostraré paso a paso cómo instalar la última versión estable de OpenSSL desde el código fuente en servidores Ubuntu 18.04 y CentOS 7.6.
¿Qué vamos a hacer?
- Instalar las dependencias
- Descargar el código fuente de OpenSSL
- Instalar OpenSSL
- Compilar e Instalar OpenSSL
- Configurar las bibliotecas de enlace
- Configurar el binario de OpenSSL
- Probar
Paso 1 – Instalar dependencias
El primer paso, antes de que podamos compilar la biblioteca OpenSSL desde el código fuente, es instalar algunas dependencias de paquetes, incluyendo el paquete ‘build-essential’ en Ubuntu, o el paquete ‘Development Tools’ en CentOS.
En Ubuntu
Actualiza el repositorio de Ubuntu e instala las dependencias de los paquetes para la compilación del software utilizando el comando apt que aparece a continuación.
sudo apt update
sudo apt install build-essential checkinstall zlib1g-dev -y
En CentOS
Instala las librerías ‘Development Tools’ y algunos paquetes utilizando el comando yum.
yum group install 'Development Tools'
yum install perl-core zlib-devel -y
Una vez completada la instalación, vaya al siguiente paso.
Paso 2 – Descargar OpenSSL
En este tutorial, instalaremos la última versión estable de OpenSSL – OpenSSL 1.0.2o. Puede descargar el código fuente desde el sitio de OpenSSL.
Vaya al directorio ‘/usr/local/src’ y descargue el código fuente de OpenSSL utilizando wget.
cd /usr/local/src/
wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
Ahora extraiga el archivo openssl.tar.gz, y vaya al directorio ‘openssl’.
tar -xf openssl-1.0.2o.tar.gz
cd openssl-1.0.2o
El código fuente de OpenSSL ha sido descargado.
Paso 3 – Instalar OpenSSL
Antes de instalar la versión personalizada de OpenSSL en el sistema, vamos a comprobar la versión instalada utilizando el siguiente comando.
openssl version -a
Abajo están mis resultados en Ubuntu:
Y esto es en CentOS:
Sustituiremos la versión ‘1.1.0g’ por la última versión estable 1.0.2o.
Instalaremos la nueva versión de OpenSSL en el directorio específico ‘/usr/local/ssl’, y luego habilitaremos las Librerías de Enlace de OpenSSL, y configuraremos el nuevo PATH binario para OpenSSL.
Instalar y compilar OpenSSL
Ir al directorio descargado de openssl ‘/usr/local/src/openssl’.
cd /usr/local/src/openssl-1.0.2o
Configurar y compilar OpenSSL con los siguientes comandos.
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make
make test
Esperar al proceso de compilación de OpenSSL.
Nota:
- –prefijo y –openssldir = Establecer la ruta de salida del OpenSSL.
- compartido = forzar la creación de una biblioteca compartida.
- zlib = habilitar la compresión usando la librería zlib.
Cuando el proceso de compilación haya finalizado, instale el OpenSSL usando el siguiente comando.
make install
OpenSSL se instala en el directorio ‘/usr/local/ssl’.
Configurar librerías de enlace
A continuación, configuraremos las librerías compartidas para OpenSSL. El nuevo binario de OpenSSL cargará los archivos de las bibliotecas desde el directorio ‘/usr/local/ssl/lib’.
Vaya al directorio ‘/etc/ld.so.conf.d’ y cree un nuevo archivo de configuración ‘openssl-1.0.2o.conf’.
cd /etc/ld.so.conf.d/
vim openssl-1.0.2o.conf
Pegue el directorio de la ruta de la biblioteca openssl.
/usr/local/ssl/lib
Guardar y salir.
Ahora vuelva a cargar el enlace dinámico utilizando el comando siguiente.
sudo ldconfig -v
Y verá que las bibliotecas OpenSSL en el directorio ‘/usr/local/ssl/lib’ se ha cargado.
Ubuntu:
CentOS:
Configurar el binario de OpenSSL
Sustituiremos el binario de openssl por defecto ‘/usr/bin/openssl o /bin/openssl’ por la nueva versión ‘/usr/local/ssl/bin/openssl’.
En Ubuntu 18.04 LTS
Haga una copia de seguridad de los archivos binarios.
mv /usr/bin/c_rehash /usr/bin/c_rehash.BEKUP
mv /usr/bin/openssl /usr/bin/openssl.BEKUP
Edite el archivo ‘/etc/environment’ usando vim.
vim /etc/environment
Ahora añada el nuevo directorio binario de OpenSSL como se indica a continuación
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ssl/bin"
Guarde y salga.
Recargue el archivo de entorno y pruebe el nuevo PATH binario actualizado.
source /etc/environment
echo $PATH
Ahora comprueba de nuevo el archivo binario de OpenSSL.
which openssl
Obtendrás el resultado que aparece a continuación.
La ruta binaria de OpenSSL para Ubuntu ha sido actualizada.
En CentOS 7.6
Hacer una copia de seguridad de los archivos binarios de OpenSSL de CentOS.
mv /bin/openssl /bin/openssl.BEKUP
Crear nuevos archivos de entorno para OpenSSL.
vim /etc/profile.d/openssl.sh
Pegar la configuración de abajo.
#Set OPENSSL_PATHOPENSSL_PATH="/usr/local/ssl/bin"export OPENSSL_PATHPATH=$PATH:$OPENSSL_PATHexport PATH
Guardar y salir.
Hacer ejecutable el archivo openssl.sh.
chmod +x /etc/profile.d/openssl.sh
Cargue el entorno de OpenSSL y compruebe el directorio bin PATH utilizando los comandos que aparecen a continuación.
source /etc/profile.d/openssl.sh
echo $PATH
Ahora compruebe el archivo OpenSSL.
which openssl
Obtendrá el resultado que aparece a continuación.
La ruta binaria para OpenSSL en CentOS ha sido actualizada.
Paso 4 – Pruebas
Prueba la nueva versión de OpenSSL utilizando el siguiente comando.
openssl version -a
El resultado en Ubuntu.
Resultado en CentOS.