SSL gratis, empieza a probarlo

Estamos cansados de oir la necesidad que hay de ir pasando todos nuestros sitios web a que trabajen con «https», y, aunque el motivo es lógico, los costes mensuales, para muchos de nosotros que apenas obtenemos ingresos de nuestro site, hacen que nos planteemos el dar ese paso; sin embargo, ya hay una forma de hacerlo, de una forma totalmente gratuita; aunque sea con limitaciones: Let’s Encrypt

Primero, vamos a aclarar algunos conceptos:

El activar un protocolo HTTPS en nuestra web nos aporta ventajas en dos grandes areas; la primera de ellas, es que las comunicaciones con nuestros usuarios, pasan a estar encriptadas, con el aumento de seguridad que conlleva; si nuestras comunicaciones estan encriptadas, sera mas dificil que un tercero, por ejemplo, falseando una conexión WIFI, pueda conseguir los datos que se estan transmitiendo, ya que, aunque pueda verlos, la codificación hará difícil su interpretación, y, para esto, la solucion que os proponemos hoy os puede resolver el problema.

La otra ventaja es que, de alguna forma, estamos garantizando a nuestro visitante, que somos quien decimos que somos, y para esa funcionalidad, muy deseable en las tiendas online, el sistema que vamos a comentar no os sirve,  ya que nadie nos autentifica a nosotros….

Sin embargo, y si no necesitáis esa segunda funcionalidad, yo os animo a que por lo menos implantes https. Si nos paramos a pensar que una gran importante parte del trafico web proviene de telefonos moviles, y que envian continuamente contraseñas de webs, de correos electrónicos, y de mil aplicaciones, es mejor que no se haga en texto plano, ya que como móviles, esas comunicaciones se realizan en cualquier entorno, en redes WIFI abiertas, y muchas veces de propietarios desconocidos, o de usuarios mal intencionados, es mejor que todas nuestras comunicaciones esten codificadas; justo lo que hace el instalar un certificado!

Y tras esta explicación de los motivos por lo que tendríamos que hacerlo, os presento un proyecto que nació hace algun tiempo:

 Let’s Encrypt

Según sus propias palabras:

La Web es una parte cada vez más integral de nuestra vida cotidiana, y la encriptación por defecto es crítica con el fin de proporcionar el grado de seguridad y privacidad que la gente espera.

Y para ello, proponen un sistema gratuito, automatico y abierto que nos permite disponer de un certificado digital, que ademas podemos aplicar por dominio.

En esta primera entrega, vamos a explicar como instalarlo en una maquina con Centos 6.x y Virtualmin. Todo el desarrollo de este articulo, se basa en las notas de:

  • https://www.virtualmin.com/node/39175
  • https://joealdeguer.com/how-to-install-and-setup-letsencrypt-for-virtualmin/
  • https://www.virtualmin.com/node/38853
  • http://en.sutublog.com/bash-script-auto-renew-letsencrypt-certificate/712

Como veis, no soy muy original; podéis acudir a mis fuentes para cualquier duda que tengais y que yo no pueda resolver. Mi trabajo ha sido comprender como funciona, e instalarlo en una maquina. A continuación tenéis detallado el proceso

Instalando Let’s Encrypt

Nuestro primer paso, es preparar nuestro equipo; para ello, probablemente neceistareis:

[code]

#  Instalar repositorio EPEL
yum install epel-release

# Instalar repositorio IUS
rpm -ivh https://rhel6.iuscommunity.org/ius-release.rpm

# instalar python y git
yum –enablerepo=ius install git python27 python27-devel python27-pip python27-setuptools python27-virtualenv -y

yum -y install git

[/code]

A continuación, podemos descargar la ultima version de «letsencrypt» desde gitub

[code]cd /usr/local/src/ && git clone https://github.com/letsencrypt/letsencrypt[/code]

Entramos en el directorio de descarga

[code]cd letsencrypt[/code]

A partir de este momento, contais ya con los scripts necesarios. El que mas vais a utilizar, podeis verlo ahora funcionando con:

[code]./letsencrypt-auto –help all[/code]

Con esto os presentara todos los parámetros con los que podéis trabajar. Ahora ya podemos empezar a escribir algunos ficheros.

Primero cli.ini con informacion acerca de nuestra instalacion; segun la ruta en la que hemos dejado letsencrypt, podemosdejarlo alli mismo; osea:

en /usr/local/src/letsencrypt/cli.ini ponemos

[email protected]
server=https://acme-v01.api.letsencrypt.org/directory
renew-by-default
agree-tos

en ese mismo directorio, podemos dejar el script  /usr/local/src/letsencrypt/sslactivate_all.sh

#!/bin/bash
LETSENCRYPT_DIRECTORY="/usr/local/src/letsencrypt"
CONFIG_PATH="/usr/local/src/letsencrypt/cli.ini"
LETSENCRYPT_CERTS_PATH="/etc/letsencrypt/live/"

cd $LETSENCRYPT_DIRECTORY

#We list all virtualservers with ssl and without SSL
for i in $( virtualmin list-domains --name-only --no-alias --with-feature ssl)
do
#domain name
domain=$i
echo -e "\nDomain $domain : \n############################################"

#Generate certificate
#####################
echo -e "\nGenerate certificate \n############################################"

#Grab domain infos
domaininfos=$(virtualmin list-domains --simple-multiline --domain ${domain})
#domain path, don’t know a better way to find it
path=$(echo "${domaininfos}" | grep "HTML directory:" | cut -d' ' -f7)
#Username, don’t know a better way to find it
username=$(echo "${domaininfos}" | grep "Username:" | cut -d' ' -f6)

#All domains with same username, alias only
#echo "virtualmin list-domains --alias --user ${username}" --name-only
aliases=$(virtualmin list-domains --alias --user "${username}" --name-only)
domains=${domain}
if [ "${aliases}" ]
then
echo -e "\nAliases : \n############################################"
for j in ${aliases}
do
domains="${domains} -d ${j}"
done
fi

#display command
echo "./letsencrypt-auto --config ${CONFIG_PATH} -d ${domains} --authenticator webroot --webroot-path ${path} auth";
#run command
result=$(./letsencrypt-auto --config ${CONFIG_PATH} -d ${domains} --authenticator webroot --webroot-path ${path} auth)
echo "${result}"

echo -e "\nApply certificate \n############################################"
#Install certificate
echo "virtualmin install-cert --domain ${domain} --cert ${LETSENCRYPT_CERTS_PATH}${domain}/cert.pem --key ${LETSENCRYPT_CERTS_PATH}${domain}/privkey.pem --ca ${LETSENCRYPT_CERTS_PATH}${domain}/fullchain.pem"
virtualmin install-cert --domain ${domain} --cert ${LETSENCRYPT_CERTS_PATH}${domain}/cert.pem --key ${LETSENCRYPT_CERTS_PATH}${domain}/privkey.pem --ca ${LETSENCRYPT_CERTS_PATH}${domain}/fullchain.pem
done

Ahora, desde virtualmin, activais SSL para todos los dominios que querais, y despues ya podeis lanzarlo

#sh ./sslactivate_all.sh

El shell recorrerá todos los dominos con SSL activo e ira instalando los certificados en cada uno de ellos.

Por si queréis solicitar certificados desde el panel, podeis ir a webmin

Webmin. instalando letsencrypt

y abrir Webmin configuración de módulos

webmin instalando letsencrypt

y alli, indicamos la ruta completa del scriptde instalacion de letsencrypt; en nuestro caso:

/usr/local/src/letsencrypt/letsencrypt-auto

A partir de este momento, y durante los proximos 90 dias, disponemos de certificados para poder trabajar nuestros dominios con https, y podemos también instalar esos certificados en nuestro servidor de correo, o en nuestro ftp.

Vamos a gestionar la web que deseemos con Virtualmin y escogemos «Server Configuration»->»Manage SSL Certificate

Alli encontrareis botones para activar esos certificados para los distintos servidores que tengais.

Acerca de Miguel Garcia

Programador, Desarrollador web, Formador en distintas areas de informatica y director de equipos multidisciplinares.
Esta entrada fue publicada en Autentificación y encriptación y etiquetada , , . Guarda el enlace permanente.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.