Publicado el 26/9/2017 por kofran

Guía Para Instalar Certificado De Let's Encrypt En Ubuntu 16.04 Y Apache 2

Hace unos días implementé en el protocolo HTTPS, para ello hice uso del servicio gratuito de Let's Encrypt, básicamente lo que ellos proveen son los certificados que justamente certifican, valga la redundancia, que nuestra conexión con el servidor es segura.


Como mencioné, el servicio es gratuito, y está apoyado por empresas muy importantes, como ser, Mozilla, Cisco, Facebook, Chrome, y muchas más. Puedes encontrar todos los "Sponsors" haciendo clic aquí.


Ventaja


Es gratuito.


Desventaja


Hay que renovar el certificado cada 90 días.


Importante


Esta guía se encuentra dirigida para aquellos que ya tengan un servidor andando en Ubuntu Server 16.04 y con Apache 2.


Primer Paso, Instalar el Cliente de Let's Encrypt


Vamos a instalar el cliente oficial llamado Certbot, para esto debemos agregar un repositorio a nuestra lista de repositorios de Ubuntu:


sudo add-apt-repository ppa:certbot/certbot


Tendrás que presionar enter para aceptar y agregar el repositorio. Y luego actualizamos:


sudo apt update


Por último tenemos que instalar Certbot:


sudo apt install python-certbot-apache


Con esto ya tenemos instalado el cliente.


Segundo Paso, Generar el Certificado SSL


Para generar nuestro certificado para Apache usaremos Certbot, el cual se encargará de obtenerlo automáticamente para el dominio que le indiquemos.


Supongamos que nuestro sitio web es example.com, ejecutaremos el siguiente comando:


sudo certbot --apache -d example.com


Al finalizar la instalación tendremos nuestros certificados instalados. Ahora solo resta configurar nuestro archivo de apache, debemos editar el siguiente archivo con nuestro editor favorito:


sudo nano /etc/apache/sites-available/example.com.conf


Y agregamos algo como esto al final:


Atención: entre el simbolo "<" y "VirtualHost" hay un espacio, el cual debe ser removido en el archivo




< VirtualHost *:443>

ServerName example.com
ServerAlias example

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem


DocumentRoot /var/www/example.com/public_html


ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined


< /VirtualHost>



Si queremos redirigir el trafico del puerto 80 al puerto 443 podemos hacer algo así:


Atención: entre el simbolo "<" y "VirtualHost" hay un espacio, el cual debe ser removido en el archivo




< VirtualHost *:80>

ServerName example.com
ServerAlias example
Redirect / https://example.com/

< /VirtualHost>



Ahora reiniciamos Apache para que impacten los cambios en el archivo de configuración:


sudo service apache2 restart


Con todo esto deberíamos poder ingresar a nuestro sitio utilizando https


Tercer Paso, Configurar la Renovación Automática


Nuestro certificado recién instalado tiene una validez de 90 días, por lo cual, deberemos renovarlo periódicamente si queremos seguir utilizando los certificados de Let's Encrypt.


Vamos a hacer uso de cron para ejecutar diariamente el proceso de revisión de vencimiento del certificado:


sudo crontab -e


Seleccionamos nuestro editor de texto favorito, y al final de todo agregamos la siguiente linea, la cual se ejecutara todos los días a las 3:15 am.


15 3 * * * /usr/bin/certbot renew --quiet


Con todo esto podremos tener nuestro sitio con https funcionando.


Espero sea de utilidad.


Esta guía está basada en How To Secure Apache with Let's Encrypt on Ubuntu 16.04 .

Comentarios:

  • kofran dijo el 27/8/2018 a las 23:51:51:
    Casi un año después de la implementación de Let's Encrypt, y todo sigue andando flawless!
Inicia sesión para comentar