OpenSSL

Let's Encrypt

 

OPENSSL
SÍGUEME EN LinkedIn | COMENTAR EN LinkedIn

 

 

¿Qué es OpenSSL?

El acrónimo de OpenSSL se deriva del término en inglés Open Source Secure Sockets Layer. Es un software de código abierto ampliamente utilizado para proporcionar seguridad a las comunicaciones sobre Internet. Ofrece una variedad de herramientas y protocolos criptográficos, incluyendo SSL/TLS, que se utilizan comúnmente para proteger conexiones HTTPS.

Personalmente compilo los binarios OpenSSL ya que sus librerías son necesarias en la pila de software open source, por ejemplo, para obtener los binarios Windows de PHP y PostgreSQL, hay que enlazar las librerías de OpenSSL con estas aplicaciones para que puedan crear conexiones seguras.

 

¿Qué es Let's Encrypt?

Let's Encrypt es una organización sin fines de lucro que proporciona certificados SSL/TLS gratuitos para facilitar la implementación de comunicaciones seguras en Internet. Su objetivo principal es promover el uso generalizado de HTTPS, lo cual es crucial para garantizar la privacidad y seguridad en línea. Los certificados emitidos por Let's Encrypt son compatibles con la mayoría de los navegadores web actuales, haciendo que sea más fácil implementar HTTPS en sitios web, servicios web y aplicaciones móviles.

 

¿Qué es Criptografía?

La criptografía es un conjunto de técnicas y procedimientos que se utilizan para proteger la información confidencial de ser leída o modificada por personas no autorizadas. Se utilizan métodos matemáticos y algoritmos avanzados para cifrar datos, archivos, mensajes, garantizando así su seguridad en un entorno digital.

 

¿Qué es un CSR?

El acrónimo de CSR se deriva del término en inglés «Certificate Signing Request», una posible traducción al español sería: Solicitud de Firma de Certificado.

Podemos decir que un CSR, no es más que un bloque de texto cifrado, este bloque de texto contiene información sobre el solicitante y la clave pública que se incluirá en el certificado.

-----BEGIN CERTIFICATE REQUEST-----
MIIE8jCCAtoCAQAwgawxCzAJBgNVBAYTAkFyMRUwEwYDVQQIDAxCdWVub3MgQWly
ZXMxHDAaBgNVBAcME1ZlaW50aWNpbmNvIGRlIE1heW8xFjAUBgNVBAoMDUJ5dGVz
IEZyaWVuZHMxDjAMBgNVBAsMBUJ5RnJzMRkwFwYDVQQDDBBieXRlc2ZyaWVuZHMu
Y29tMSUwIwYJKoZIhvcNAQkBFhZieXRlc2ZyaWVuZHNAZ21haWwuY29tMIICIjAN
BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1W8lN5CPq4Da9vCyMUe3GGv8cQ5w
XmdVFx8Mb3pNh552+onmec0LouHZow9Di9F25bv5c+YFR92ZdAx1pKBu6Tx/Lp5M
Bna3M1tx4eMXZll0jYjzIZ4ikl7J5S1iGzCJRJK6K7nLn3HxkEpZfwfbMYUuPDFP
9mVo/C6RpGxkDD49hIMB9F1oPswbSg0OmORWN7b4aasjXwTe5C9LFMT/kEwrXQxq
hl1BFWxuZtHm8RDI0JP5PUjzRXYhygSreXy/210GNTEQl/cK1uQxYXmPEFSXOcYQ
8bxfzOKCfQa1A/CchS+5LJqiITW00/11A1p+lLsDebzVBe/BMoF/+mNlOkuUH8aY
/ciAta9BRMW6lYhtUmMrOWFOa5Y55E1bDWln/vzIhACwyP2d0TM9waAIzRoi+FxY
dxjWcRonkOBhiC81O3GsebtZBMgyQGYeL81sXwl+eKMoakLAm9Lbg4TnDitEqtKH
YdYgcdIhV75XmPEbGM9Z8Xg7AxtYJ9GvaDYi3eNJSW0pbF7NpoOW0h2VwEzX4GJo
jqYqHMW1du7pOfNxztj8CxCEbkyMdRfFSFHMjMrrxLpHKb6FQDQrdzqzRRLh7zVS
Pc6upvDSIngY4t8nnMQb0Z+g8kV+T+wZaaFuh/CorS62gquBoVuiRF/kVvKmBGMP
vN9AgqRWLX94gF0CAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4ICAQCek1SAMhJOkVa4
dnIGAHOI70PmH9rLEt397TEjYnF4WejrhZMyNCYsth6hLgU8gDNQA9eQ6Sxc6bUU
JfUZuUuOtRaxPiTlX18ShNNiXKEQEPpYlIJlNSN7OUbRPZmsMLA2NM5EhM9u9qrQ
ZHQOt+F4ZIXNisEblAzwKKAvXVkMEAS2afKNaLOfOt5ICvtcQD0AXXE1nt7KWuXR
qj3+FxDDAkIXx1AEC5X6TFOBAsBVjU1JDeQ1WP7vRWJOjRin8qravLEkxgLaE37L
BYGBdbDl1/7tXRwybutS9lWC4vHl08Jk6t89iVbZaJX1lPhRNRq+ZA9PC79NjuJZ
3f2oiAeYx1BIfPpujPBROelsi3MSZpWDnNA3WSsHI15ipHjy8wuXWjTZKaG5yRyH
VbHQKH4GHbPHiKVUzi5ckfUYP5LIa2SfcsE8kwJyOJvfTiGFnAhw529vyS5ePt6r
ywCJAH/Tesb8Spn48ClKUfNTXZb8Tw1qt4ww0/fGPpUIl99cGyJdEmvyPvZ2oR2h
K3ojjhXn+/N18aJOEQNGeuL8+oBNjz6sW6ysarET1q4s8pboWounWy5gWaXCUbMi
RmuuPaqpQI1ZxEXex8l6DBGXlrVV5kzERgkzEmu4bija4KyuFESODyv22UIE0g==
-----END CERTIFICATE REQUEST-----

 

¿Porqué necesito un CSR?

La necesidad de un CSR surge porque las autoridades de certificación, como Let's Encrypt u otras CA, requieren cierta información básica sobre el titular (propietario del dominio) para poder otorgar un certificado SSL/TLS válido. Esta información puede incluir datos como el nombre de la entidad, su dirección postal y la duración deseada del certificado.

Al enviar una solicitud de CSR con esta información, el solicitante está asegurando que es el legítimo propietario del dominio y permite a Let's Encrypt generar un certificado seguro para proteger las comunicaciones en línea. Sin embargo, no solo se trata de proporcionar la información requerida; también es importante cifrar adecuadamente el CSR para evitar que sea accesible por terceros no autorizados.

 

¿Porqué Necesito un Certificado para mi Dominio?

Tomemos en consideración la comunicación entre el navegador y el servidor de su red social. La mecánica es la siguiente: en un principio, el servidor transmitirá al cliente, en este caso el navegador, el certificado firmado por Let's Encrypt.

Posteriormente, el navegador verificará si la firma de Let's Encrypt es legítima. Si la firma es legítima, entonces el navegador generará una clave de sesión utilizando criptografía simétrica, esto es así, debido a que computacionalmente es mucho más eficiente la criptografía simétrica.

El servidor entonces descifrará la clave de sesión creada por el navegador utilizando su clave privada, a partir de ese momento ambas partes tendrán la misma clave para cifrar y descifrar información, podrán entonces, mantener transferencias de información cifrada entre ambos.

 

Ejecutando OpenSSL

Ahora que hemos respondido algunas preguntas relacionadas con la temática, realizaremos algunas acciones para generar como objetivo final un archivo CSR utilizando los binarios para Windows de OpenSSL.

El archivo CSR que generáremos, será perfectamente válido para obtener un certificado de dominio otorgado por Let's Encrypt, aunque claramente, usaremos un nombre de dominio ficticio como ejemplo.

Deberá descargar los binarios para Windows de OpenSSL versión 3.3.1 desde el siguiente enlace.

Recordar leer la información mostrada en la sección de descargas para comprobar el correcto funcionamiento del binario «openssl.exe» antes de continuar.

Si luego de haber ejecutado en la consola de Windows el comando .\openssl --version o .\openssl.exe --version se muestra las versión de OpenSSL, todo está funcionando de mil maravillas.

Si no funcionó, revisar que la consola muestre el camino completo donde se descomprimieron los binarios de OpenSSL, ese camino deberá terminar en «../bin>».

 

Generar Clave Privada

Generáremos entonces una clave privada, las claves privadas en criptografía pueden tener una cantidad de bits variable, cuanto más bits contenga una clave privada más segura será, pero la consecuencia negativa es que computacionalmente es más costosa su utilización.

Ahora hay que ejecutar el comando que se muestra debajo. Utilizaremos un dominio ficticio llamado abcd.com. El parámetro genrsa indica a openssl que queremos utilizar al algoritmo RSA para crear nuestra clave. Como se puede apreciar, indicamos que la clave deberá tener 4096 bits.

.\openssl genrsa -out abcd.com.key 4096

Aquí el archivo de clave privada estará dentro del directorio donde se localiza el ejecutable «openssl.exe» y tendrá el nombre «abcd.com.key». Opcionalmente puede indicar una ruta para almacenar este archivo en otro lugar, por ejemplo, c:\keys\abcd.com.key, deberá utilizar esta ruta en comandos posteriores para utilizar la clave privada.

 

Generar Clave Pública

Una vez que ya tenemos la clave privada generada utilizaremos esta clave para generar la clave pública. Esta clave será enviada en el CSR junto con otros datos a una CA como Let's Encrypt, para que otorgue el certificado de dominio.

.\openssl rsa -pubout -in abcd.com.key -out abcd.com.pub

 

Generar el Archivo CSR

Esta es la última parte del proceso. El parámetro req -new indica a OpenSSL que queremos generar el archivo CSR, como se puede apreciar, se utiliza la clave privada para generar la solicitud de firma de certificado.

Como se ha mencionado anteriormente, la clave pública será incluida dentro del archivo CSR, pero además necesario completar un pequeño formulario con datos necesarios para que una CA (Certificate Authority) pueda generar el certificado de dominio.

.\openssl req -new -key abcd.com.key -out abcd.com.csr

El pequeño formulario interactivo que se deberá completar para terminar de generar el archivo CSR se muestra debajo, junto con los posibles datos ficticios. Siempre deberá utilizar información real y verificable cuando se pretenda obtener un certificado para un dominio.

Country Name [AU]: Au
State or Province Name: My State
Locality Name []: My Locality
Organization Name: ABCD Company
Organizational Unit Name []: Web Services
Common Name FQDN []:abcd.com
Email Address []: info@abcd.com

Cuando se muestre [] significa que los datos que se exigen son opcionales, puede omitir el ingreso presionando Intro.

En aras de la claridad y simplicidad se ha eliminado texto de formulario que es mostrado por OpenSSL. De todos modos es muy similar al que muestra en la consola cuando genere el CSR.

 

Últimas Palabras

Aquí nos detenemos. Hacia delante las cosas son más laboriosas, en el sentido que es necesario tener un dominio comprado y tener infraestructura de servidor para hacer funcionar toda la pila web.

Primero es necesario comprar un dominio, luego disponer de un servidor que pueda responder a peticiones externas, paso siguiente apuntar con el registro DNS al servidor. Después si es momento de utilizar el CSR con Let's Encrypt para que otorgue un certificado para el dominio.

De todos modos, seguramente, habrá podido comprender y apreciar las sinergias que existen entre OpenSSL y el acceso a servicios en línea, siempre será un certificado digital el que hace posible la comunicación segura. Ahora usted sabe cómo generar un CSR, que es el primer paso, aunque no por eso es menos importante.

 

arriba

 

ƒ

 



Bytes Friends - © 2010-2024