27 abril, 2024

IsProto

Soluciones para Redes e Internet

Certificado SSL: ¿Cómo crear un certificado con OpenSSL?

certificado ssl

En temas de seguridad en los sitios web, OpenSSL es una opción bastante utilizada para la creación de tu certificado SSL, aquí te mostramos una guía para crear tu certificado SSL con OpenSSL.

¿Cómo crear un certificado SSL?

Uno de los ejemplos más comunes en donde se muestra el uso de la criptografía de clave pública y el firmado digital para las conexiones seguras es el uso de los protocolos SSL (Secure Sockets Layer) y TLS (Transport Layer Security) para crear un certificado SSL.

OpenSSL es un paquete que tiene gran alcance debido al uso de diversos algoritmos criptográficos, y por tal motivo muchos usuarios recurren a la biblioteca para realizar aplicaciones de seguridad y además se encuentra en constante mantenimiento y actualización.

Generación de claves privadas con OpenSSL

certificado ssl

Todo sistema criptográfico de clave pública consta de dos claves: una privada y una pública, en donde ambas partes son necesarias para descifrar el mensaje o código cifrado.

Este sistema de claves en comparativa podemos verlo como una llave y su cerradura. La clave privada es la llave y la clave pública es la cerradura, ambas son necesarias para proporcionar la seguridad del sistema, sin embargo todos pueden ver la cerradura (clave púbica), sin embargo la llave es la clave privada que solo posee el usuario.

Para generar un certificado SSL, procedemos a crear en forma previa el sistema de claves, que en OpenSSL es muy sencillo a través de la opción genrsa tal y como se muestra a continuación:

openssl genrsa -out mi_clave.pem -des3 1024

Y en pantalla se muestra lo siguiente:

Generating  RSA private key, 1024 bit long modulus
..................................................++++++
...................++++++
e is 65537 (0x10001)
Enter pass phrase for mi_clave.pem:
Verifying - Enter pass phrase for mi_clave.pem:

Con el comando anterior se genera una nueva clave privada, la cual se va a almacenar en el archivo mi_clave.pem con la frase clave que se introduce después de la generación del módulo de longitud de 1024 bits, que es la longitud de la clave generada.

Creación de una Autoridad Certificadora para el certificado SSL

Una característica que tienen los certificados SSL es tener una autoridad certificadora que avale la validez de tu certificado SSL, por ejemplo Verizon o GeoTrust, entre otros.

Generalmente los navegadores cuentan con una lista de Autoridades Certificadoras (CA) de confianza, sin embargo tu puedes crear tu propia autoridad certificadora para tu certificado SSL, por ello se le llama certificado autofirmado.

Las distribuciones de OpenSSL contienen un script llamado CA, el cual sirve para crear una Autoridad Certificadora. El proceso para crear una CA es con los siguientes comandos:

cd /etc/ssl/certs
/usr/share/ssl/misc/CA -newca
CA certificate filename (or enter to create)
Making CA certificate ...
Generating a 1024 bit RSA private key
....++++++
.........................++++++
writing new private key to './demoCA/private/./cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be inc orporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:MX
State or Province Name (full name) [Berkshire]:Sonora
Locality Name (eg, city) [Newbury]:Hermosillo
Organization Name (eg, company) [My Company Ltd]:ejemplo.com
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:isprohost
E-mail Address []:[email protected]

Con el script anterior se puede crear un certificado para la Autoridad Certificadora, con la cual pordemos autofirmar nuestros certificados SSL para nuestro servidor web. El script anterior genera el directorio demoCA, el cual contiene éstos archivos que generamos.

Para modo de ejemplo, podemos tomar un archivo de configuración /usr/share/ssl/openssl.cnf, el cual contiene el directorio default del certificado CA y lo copiamos en nuestro directorio demoCA para guardar una copia.

cp /usr/share/ssl/openssl.cnf /etc/ssl/certs/demoCA/openssl.cnf

Posteriormente modificamos la línea en donde indica el directorio ./demoCA y lo ponemos con la ruta /etc/ssl/certs/demoCA.

En el directorio demoCA hay un archivo cacert.pem. Este es el archivo generado para ser el certificado de la CA. Para utilizarlo, podrías crear un hash del certificado al utilizar el siguiente comando:

ln -s cacert.pem `openssl x509 -noout -hash < cacert.pem`.0

Creación de solicitud de certificado SSL con OpenSSL

certificado ssl

¿Cómo crear una solicitud de certificado SSL en OpenSSL? Para crear una solicitud de certificado SSL deberás ejecutar el siguiente formato, indicando el archivo de configuración de la autoridad certificadora:

openssl req -config /etc/ssl/certs/demoCA/openssl.cnf -new -keyout ejemplo.com.key.pem -out ejemplo.com.csr

Con el comando anterior se generan dos archivos: ejemplo.com.key.pem, el cual contiene la clave privada del certificado SSL por generarse, y ejemplo.com.csr, que es la solicitud que será firmada por la autoridad certificadora CA.

Firmado de solicitud y creación del certificado

Una vez creada la solicitud, es momento de crear el certificado. Para crearlo, debemos firmar la solicitud por la autoridad certificadora CA utilizando el siguiente comando:

openssl ca -config /etc/ssl/certs/demoCA/openssl.cnf -policy policy_anything -out ejemplo.com.cert.pem -infiles ejemplo.com.csr

Para la generación del certificado, se nos solicitará la contraseá para el archivo de clave privada de la autoridad certificadora, el cual al coincidir, se culmina la creación del certificado.

Una vez generado el certificado, se muestran los detalles del certificado, por ejemplo el período de validez, la información del certificado, las extensiones x509 y el identificador de la clave de la CA. Solo resta firmar el certificado, es cual se hace solo dando la opción “y”.

Después de generar el certificado ejemplo.com.cert.pem, es posible utilizarlo en tu dominio, el cual tendrá la vigencia indicada en el mismo certificado.

Revocación de certificado

¿Cómo revocar un certificado SSL? En caso de estar comprometido algún certificado, éste se puede revocar realizando dos sencillos pasos:

Agregar el certificado a CRL (Lista de revocación de certificados): Para agregarlo en la lista, ejecutamos el siguiente comando:

openssl ca -gencrl -out crl.pem -config /etc/ssl/certs/demoCA/openssl.cnf

En donde después de escribir la contraseña, se agrega el certificado a la lista de revocación, con duración de 1 mes.

Revocación del certificado SSL: El paso final para revocar un certificado SSL requiere la actualización de la base de datos con la autoridad certificadora, para hacerlo, utilizamos el siguiente comando:

openssl ca -revoke ejemplo.com.cert.pem -config /etc/ssl/demoCA/openssl.cnf

Introducimos la contraseña y el certificado queda revocado, es decir, pierde su validez.

Conclusiones

La creación de certificados SSL permite a los usuarios obtener la protección de la información en su dominio al utilizar un protocolo cifrado.

Los sitios https, es decir los que utilizan el puerto 443, deben mantener toda la información cifrada para que pueda lograr su objetivo, que es mantener la información segura a través de un medio inseguro, que es el Internet.

Para ello te recomendamos leer el siguiente artículo: