Uno de los problemas que encontramos en el aula cuando queremos explicar el funcionamiento del protocolo HTTPS y su uso en un servidor web, es que los certificados digitales generalmente cuestan dinero. Por otro lado, podemos crearnos nuestro propio certificado digital firmándolo nosotros mismos (autofirmado). El inconveniente de esta solución es que cuando nos conectemos al servidor, el navegador nos mostrará una serie de mensajes advirtiéndonos del peligro que corremos al acceder a esta web; ya que el certificado no está validado (firmado) por un Autoridad de Certificación (CA) autorizada.
A finales de 2014 la Internet Security Research Group publicó el proyecto Let's Encrypt con la idea de proporcionar a la comunidad de Internet certificados digitales de forma gratuita. Además desarrollaron el protocolo ACME para que se pudiera realizar de forma automática todo el proceso de interacción con la CA para la creación, renovación y despliegue de certificados digitales.
Certbot
A la hora de obtener un certificado digital de Let's encrypt se pueden seguir diferentes métodos, todos ellos válidos. En este artículo vamos a describir el método recomendado por la propia organización que consiste en el uso del programa Certbot. Este programa nos va a permitir automatizar todo el proceso.
El primer paso consiste en instalar Certbot. Aunque en los repositorios de las distintas distribuciones de Linux podamos encontrarlo, se aconseja que se instale desde el propio repositorio de los desarrolladores, para asegurarnos de utilizar la última versión disponible. Por otro lado, dependiendo de la distribución de Linux que se tenga y del servidor web, habrá que modificar los comandos utilizados. Como puede leerse en el propio título del artículo, vamos a describir el proceso para un servidor Apache en una distribución Ubuntu Server. Para la instalación ejecutaremos los siguientes comandos desde la terminal:
# add-apt-repository ppa:certbot/certbot
# apt update
# apt install python-certbot-apache
Ahora que ya tenemos instalado el software ejecutaremos el siguiente comando para la obtención e instalación del certificado:
# certbot --apache --apache-server-root /etc/apache2 --apache-vhost-root /etc/apache2/sites-enabled -d www.example.com
El parámetro --apache le indica al programa que vamos a utilizar el servidor web Apache. Con --apache-server-root se especifica el directorio que contiene los ficheros de configuración y --apache-vhost-root indica el directorio que contiene los Virtual Host de Apache.
A continuación se muestra la salida de este comando, se ha resaltado en rojo las entradas del usuario:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' tocancel): email@example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for www.example.com
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/www.example.com-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-available/www.example.com-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/www.example.com-le-ssl.conf
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://www.example.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/www.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/www.example.com/privkey.pem
Your cert will expire on 2020-02-18. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt:https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-l
Donating to EFF: https://eff.org/donate-l
Donating to ISRG / Let's Encrypt:https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Si todo el proceso anterior ha ido bien, ahora tendremos instalado el certificado digital en nuestro servidor web. Para probarlo, simplemente tendremos que acceder al mismo utilizando el protocolo HTTPS (https://www.example.com).
Certbot también habrá instalado un script en /etc/cron.d para renovar el certificado de forma automática antes de que caduque, a partir de treinta días antes de la fecha de caducidad. Los certificados que proporciona Let's encrypt tienen una validez de 90 días para alentar que los usuarios utilicen el servicio automático de renovación de los mismos. Para probar si el proceso de renovación funcionará en nuestro sistema, lo podremos simular con el siguiente comando:
# certbot renew --dry-run
Cuando Certbot vaya a renovar el certificado de forma automática se encargará también de reiniciar Apache para que utilice el certificado renovado. En caso de que se produzca algún fallo en el proceso de renovación, el sistema nos lo notificará enviándonos un correo a la dirección que se haya proporcionado anteriormente.
@josrrp
Comentarios
Publicar un comentario