Genere certificados SSL/TLS válidos utilizando Let's Encrypt.
Primero iniciaremos explicando
¿Qué es un certificado SSL/TLS?
Breve historia:
En los origines de la Web (World Wide Web) la información que se enviaba
de un punto a otro viajaba sin cifrar y no necesitabamos usuarios ni contraseñas,
pues la información era información pública, conforme fuimos avanzando
la web se ha convertido en un medio para hacer transacciones financieras,
enviar y recibir información privada, etc. Otro de los beneficios e
inconvenientes de la red es que al ser una red creada para soportar
cortes y seguir operando, es necesario que pase por varios puntos
y esencialmente cualquiera de estos puntos podría leer la información
que se transmite.
¿Para que sirve un certificado TLS?
Aquí es donde entran los certificados TLS, de aquí en adelante solo le llamaremos TLS puesto que es la actualización a SSL y es lo más moderno y lo que se usa actualmente. TLS nos permite dos cosas primero, nos ayuda a verificar que el servidor a donde nos conectamos es quien dice ser (Autentificación) y hacer un un túnel cifrado, donde en teoría solo el que envia y el que recibe pueden ver la información que se transmite (Confidencialidad) decimos en teoría porque hay técnicas para ver esta información, (materia para otro artículo) pero en general es una excelente protección para la transmisión de información.NOTA IMPORTANTE:
Cabe señalar que el contar con un certificado no quiere decir que por este solo hecho, el sitio en cuestión sea seguro, porque puede tener otras múltiples vulnerabilidades como SQL injection, XSS, o todo el top 10 de OWASP que son las vulnerabilidades más comunes en sitios Web y el certificado no ayuda en nada contra eso, incluso ayda al atacante pues ahora sus ataques estarán cifrados.
Lo que sí nos proporciona el certificado es una muy buena protección en la confidencialidad de la información y en la autentifiación del servidor, otro beneficio nada despreciable es que Google nos asignará un mayor ranking en sus busquedas ya que su intención es que todos los sitios empleen TLS para hacer una web más segura.
Ahora que ya sabemos para que sirven y algunos de sus beneficios veamos que son realmente los certificados.
¿Qué son los certificados?
Los certificados son simplemente archivos que contienen llaves criptográficas, que emplean una combinación de criptografía simétrica y asimétrica, la criptografía es un tema muy extenso pero para los fines de este artículo lo mantendrémos simple.En la criptografía simetrica, los datos son cifrados con una única llave. Este tipo de criptografía es muy rápida y puede cifrar grandes cantidades de datos, pero al emplear una sola llave el medio de transmisión deber ser seguro, porque si alguien puede interceptar esa llave podrá cifrar y descrifrar los datos y se perdería la condifencialiad.
La criptografía asimétrica emplea dos llaves diferentes; una privada y una pública, ambas llaves están matematicamente relacionadas y con un adecuado rango de llaves se vuelve impractico, un poco rayando en lo imposible el encontrar la llave privada basandose en la llave pública, lo que la convierte en un excelente medio de transporte para las llaves simétricas. Una de las desventajas de la criptografía asimétrica es que es más lenta y emplea muchos recursos además no puede cifrar grandes volumenes de datos.
TLS aprovecha las ventajas de ambos tipos de criptografía, la asimétrica y la simétrica (de llave pública y llave privada) para transmitir y cifrar cualquier dato que se quiera enviar. Con esta combinación tenemos una solución muy robusta para enviar datos confidencialmente a través de un medio inseguro como es Internet y la Web.
La información que contiene un certificado regularmente incluye: El nombre de dominio
La organización
La autoridad que expide el certificado o CA
Subdominios adicionales si es que hay
Fecha de expedición del certificado
Fecha de caducidad del certificado
La llave pública
La firma digital de la autoridad certificadora
En esta ocasión usaremos Let’s Encrypt, que es una autoridad de certificación abierta, automatizada y gratuita, para conseguir certificados gratuitos durante un periodo limitado, el cual se puede renovar para tener un certificado válido todo el tiempo que sea necesario. Usaremos el cliente de Certbot para automatizar el proceso.
Cuando generamos nuestro certificado SSL/TLS en un servidor web, activamos el candado que se puede visualizar en el explorador el cual indica que se está empleando el protocolo HTTPS, permitiendo que la información entre nuestro navegador y el servidor viajen cifrados, este protocolo impide que terceros puedan ver nuestras comunicaciones con dicho sito.
Instalación de Certbot en Windows
Descargamos la última versión de Certbot para Windows:
https://dl.eff.org/certbot-beta-installer-win32.exe
Para iniciar una shell con Certbot, ingrese
"CMD" en el Menu de Inicio, haga clic en
“Ejecutar como Administrador” . Y escriba
certbot --help
para mostrar la Ayuda.
Instalación de Certbot en GNU/Linux
Para instalarlo en Debian GNU/Linux, simplemente usamos el siguiente
comando:
sudo apt-get install certbot
Al momento de escribir este artículo estoy usando la siguiente
versión, la cual va a variar con el tiempo:
sudo certbot --version
certbot 1.12.0
Generación del Certificado SSL
Una vez instalado Certbot ingresamos los siguientes comandos para
poder solicitar el certificado, debera tener en cuenta que es
necesario cambiar kolibers.org por el nombre de su dominio. Si desea
conocer más sobre los comando usados, puede usar el comando
certbot --help
, para obtener más ayuda o en su defecto
consultar el manual con el comando man certbot.
sudo certbot certonly --manual -d kolibers.com --agree-tos --preferred-challenges http-01 --server https://acme-v02.api.letsencrypt.org/directory --register-unsafely-without-email --rsa-key-size 4096
Durante la generación del Certificado, nos pedirá que creemos un archivo dentro del servidor con determinados datos, el cual se puede ver a continuación:
Una vez tengamos el fichero con los datos correctos, presionamos enter para continuar el proceso y validar la propiedad de nuestro dominio y obtener el certificado. Una vez finalizado el proceso tendrá un resultado como el siguiente:
Carga de los Certificados en Cpanel
Después de que su certificado se haya generado de forma correcta,
copiaremos el fichero fullchain.pem , copiando la
primera parte y la clave privada privkey.pem en
Cpanel. Dentro de la siguiente sección:
Security >> SSL/TLS >> Manage SSL Sites
Para el apartado de “Certificate CRT” copiaremos el fichero fullchain.pem (Solo la primera parte) y para “Private Key (KEY)”, usaremos la clave privada privkey.pem, Y daremos click en “Install Certificate”
Si todo ha salido bien, podremos acceder por medio de HTTPS a nuestro sitio Web y ver el candado dentro de la URL Como se muestra en la Imagen.
Direccionamiento HTTPS
Para finalizar tendremos que habilitar el Direccionamiento HTTPS
dentro de la configuración de Cpanel. Esto es útil cuando los
usuarios no teclean https y solo teclean http y no serviría de mucho
si el usuario solo usa http que es inseguro, aún cuando el
certificado ya esté instalado. Cuando se habilita este
direccionamiento los usuarios son redirigidos al sitio seguro sin
que ellos tengan que hacer algo.
Para ello entraremos en la sesión “Domains” del
menu principal y seleccionaremos el dominio poniendo en ON la parte
de “Force HTTPS Redirect” .
Renovacion de certificados
Es importante renovar los certificados solicitados para seguir usando el protocolo seguro HTTPS, para ello deberá tener en consideración la fecha de expiración del certificado. Ya que no registramos ningún correo electrónico, no podremos recibir notificación alguna.
Para ello podemos utilizar cualquier navegador web y hacer click en el Icono del candado y ver la fecha de validez del certificado.
Finalmente usaremos el comando sudo certbot renew
, para poder renovar el o los certificados,como se muestra en la imagen ; Esto solo se podrá realizar faltando 30 días antes de que expire la validez del certificado.
Una vez renovado los certificados, tendremos que repetir el proceso de cargar los fichero dentro la configuración del servidor; como se muestra en los pasos anteriores
Conclusión:
Hemos generado certificados SSL/TLS a través de Let's Encrypt, usando el cliente Certbot y cargamos los certificados en Cpanel para su instalación.
Recuerde renovar los Certificados antes de la fecha de vencimiento,
podemos confirmar dicha información con el comando
sudo certbot certificates
.
Cualquier duda, favor de contactarnos o si prefiere que la configuración la realice alguno de nuestros expertos, estamos a la orden en nuestros métodos de contacto en este sitio.
Escrito Por:
Jesús Flores
Security Engineer