El proceso de generación de certificados SSL/TLS es una tarea común para muchos administradores de sistemas Linux. Afortunadamente, incluso si no eres administrador, es fácil hacerlo usando OpenSSL, una herramienta de código abierto que se instala por defecto en muchas distribuciones de Linux. Aquí explicamos qué es OpenSSL, cómo instalarlo y, lo más importante, cómo usarlo para generar certificados SSL y TLS en su sistema.
¿Qué es OpenSSL?
OpenSSL es una biblioteca desarrollada por OpenSSL Project para proporcionar implementaciones SSL y TLS de código abierto para el cifrado del tráfico de red. Está disponible para una variedad de distribuciones basadas en Unix y se puede usar para generar certificados, claves privadas RSA y realizar tareas generales relacionadas con la criptografía.
Limitación del certificado SSL autofirmado
Cuando utiliza OpenSSL para generar un certificado SSL, se considera «autofirmado». Significa que el certificado SSL está firmado con su propia clave privada y no de una Autoridad de Certificación (CA).
Como tal, no se puede «confiar» en el certificado SSL y no debe usarse para ningún sitio público. Si se usa, es probable que los usuarios vean advertencias de sus navegadores sobre el certificado.
Un certificado autofirmado es útil para el desarrollo local o cualquier aplicación que se ejecute en segundo plano y que no esté conectada a Internet.
Alternativamente, puede usar LetsEncrypt u obtener un certificado verificado por una autoridad confiable, como Comodo CA.
Instalación
La mayoría de las distribuciones de Linux ya tienen una versión de OpenSSL integrada de forma predeterminada. Si no, puedes instalarlo fácilmente.
Puede instalarlo en Ubuntu y Debian usando el apt
dominio:
sudo apt install openssl
En CentOS (o su alternativa), puede instalarlo usando el yum
dominio:
sudo yum install openssl
También puede descargarlo fácilmente desde su sitio web como un archivo “.tar.gz”.
Uso básico
Ahora que tiene instalado OpenSSL, podemos echar un vistazo a algunas de las funciones básicas que proporciona el programa.
Puede comenzar viendo la versión y otra información relevante sobre su instalación de OpenSSL:
openssl version -a
Puede consultar el manual proporcionado:
openssl help
Generación de un certificado usando un archivo de configuración
La generación de un certificado usando OpenSSL es posible de muchas maneras. Una de ellas es mediante el uso de un archivo de configuración que especificará detalles sobre la organización.
Para comenzar, puede crear un archivo de configuración llamado «config.conf» y editarlo usando Nano:
sudo nano example.conf
Aquí hay un ejemplo del contenido del archivo de configuración:
[req] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext x509_extensions= v3_ca distinguished_name = dn [dn] C = US ST = California L = Los Angeles O = Org OU = Sales emailAddress = test@test.com CN = www.org.test.com [ v3_ca ] subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer:always basicConstraints = CA:true [req_ext] subjectAltName = @alt_names [alt_names] DNS.1 = test.example.com
Simplemente puede copiar y pegar esto en el archivo y realizar los cambios necesarios para reflejar la información de su organización.
A continuación, debe generar una clave privada RSA, que luego se utilizará para generar un certificado raíz:
openssl genrsa -out example.key 2048
Él -out
bandera se utiliza en este caso para especificar el nombre de la clave que se generará. También se especifica un tamaño de clave de 2048 bits, que es el valor predeterminado para las claves RSA.
También deberá generar una solicitud de firma de certificado (CSR):
openssl req -new -key example.key -out example.csr -config example.conf
En este caso, el -key
bandera se utiliza para especificar la clave RSA, el -out
marca especifica el nombre del archivo CSR y el -config
bandera se utiliza para especificar el nombre del archivo de configuración.
Después de esto, puede generar un certificado raíz, que se utiliza para generar nuestro certificado final:
openssl req -x509 -sha256 -nodes -new -key example.key -out example.crt -config example.conf
En el proceso de generar este certificado raíz, el -sha256
se utiliza para especificar SHA256 como resumen del mensaje.
Ahora, en cuanto al paso final, finalmente podemos escribir lo siguiente para generar nuestro certificado:
openssl x509 -sha256 -CAcreateserial -req -days 30 -in example.csr -extfile example.conf -CA example.crt -CAkey example.key -out final.crt
Él -CA
bandera especifica el certificado raíz, el -CAkey
bandera especifica la clave privada y -extfile
especifica el nombre del archivo de configuración. El archivo “final.crt” será el certificado SSL que desee.
Generación de un certificado sin un archivo de configuración
Alternativamente, también puede generar un certificado usando OpenSSL sin un archivo de configuración.
Puede comenzar generando una clave privada RSA:
openssl genrsa -out example.key 2048
A continuación, tendrás que generar un CSR:
openssl req -new -key example.key -out example.csr
Al generar un CSR, se le pedirá que responda preguntas sobre su organización.
Finalmente, podemos generar el propio certificado:
openssl x509 -req -days 30 -in example.csr -signkey example.key -out example.crt
Verificación de Claves y Certificados
Las claves y los certificados se comprueban y verifican fácilmente mediante OpenSSL, con el -check
bandera:
openssl rsa -check -in example.key
Puede consultar las solicitudes de firma de certificados:
openssl req -text -noout -in example.csr
y certificados también:
openssl x509 -text -noout -in example.crt
Preguntas frecuentes
1. ¿Todavía tengo que preocuparme por Heartbleed?
Heartbleed (CVE-2014-0160) es una vulnerabilidad antigua encontrada en OpenSSL en 2014. Los servidores TLS y los clientes que ejecutan OpenSSL se vieron afectados. Se lanzó rápidamente un parche unos días después de su descubrimiento, y esta vulnerabilidad no es algo de lo que preocuparse en 2022, siempre que esté ejecutando una versión moderna y actualizada de OpenSSL.
Si está utilizando OpenSSL en sistemas basados en Debian y Ubuntu, siempre puede actualizarlo ejecutando los siguientes comandos:
sudo apt update && sudo apt upgrade openssl
2. ¿Cuánto tiempo duran los certificados SSL antes de que caduquen?
Esto depende del valor que elija al generar el certificado. Esto se puede especificar mediante el -days
indicador al generar un certificado.
Credito de imagen: Sls escrito en bloque de cubo de madera por 123RF
Danos tu opinión