Utilizar SSL Let’s Encrypt con Apache en Ubuntu.
El SSL (secure socket layer) es un protocolo de seguridad desarrollado por la empresa Netscape Communications para lograr que la transmisión de datos entre un servidor y un usuario, o viceversa, a través de Internet, sea completamente segura.
Los certificados de seguridad SSL, no solo son importantes para verificar que nuestro sitio web es de confianza para los visitantes, sino que también nos ayudará a mejorar nuestro posicionamiento orgánico por 3 razones:
- Establece confianza con los visitantes
- Permite Borrar datos de Referencia
- Aumenta las posiciones en SERP
En este post configuraremos Let’s Encypt en ubuntu 16.04 o 17.10 para poder tener configurado nuestro SSL totalmente gratis ya que Let’s Encrypt es una autoridad de certificación abierta, automatizada y gratuita.
Al iniciar Ubuntu 16.04, el cliente Let’s Encrypt se incluye en el repositorio de Ubuntu, en Ubuntu 17.10, el paquete se llama certbot, lo que haremos para que funcione lef’sEncrypt en ambas versiones será usar un PPA oficial, para lograrlo ejecutaremos los siguientes comandos:
sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt update sudo apt install certbot python-certbot-apache
Podemos verificar la versión con el siguiente comando:
certbot --version
Usar Apache para habilitar HTTPS
Se recomienda utilizar el complemento Apache para habilitar HTTPS en el servidor web Apache, ya que puede obtener automáticamente el certificado SSL / TLS y se configura automáticamente.
sudo certbot --apache --agree-tos --redirect --uir --hsts --staple-ocsp --must-grapa -d www.example.com, example.com --email [email protected]
Explicación:
- Apache : use el autenticador e instalador de Apache
- Agree-tos : acepte los términos de servicio de Let’s Encrypt
- Redirect : redirige automáticamente todo el tráfico HTTP a HTTPS
- Uir : agregue el encabezado “Content-Security-Policy: upgrade-insegura-requests” a cada respuesta HTTP.
- Hsts : agregue el encabezado Strict-Transport-Security a cada respuesta HTTP.
- Staple-ocsp : habilita el engrapado OCSP.
- To-staple : agrega la extensión OCSP Must Staple al certificado.
- d: La marca va seguida de una lista de nombres de dominio, separados por comas. Puede agregar hasta 100 nombres de dominio.
- Email: correo electrónico utilizado para el registro y contacto de recuperación.
Se le preguntará si desea recibir correos electrónicos de EFF (Electronic Frontier Foundation). Después de elegir S o N, su certificado SSL se obtendrá automáticamente y se configurará para usted, lo que se indica mediante el siguiente mensaje:

Tenga en cuenta que el cliente de certbot crea el host virtual SSL:
/etc/apache2/sites-enabled/example.com -le-ssl.conf;
Con lo que nos hace el cambio de puerto de :80 a :443, si visita su sitio web, puede ver que HTTP se re dirige automáticamente a la conexión HTTPS.
Probando su certificado SSL
Diríjase a ssllabs.com para probar su certificado y configuración SSL. También puede verificar si su nombre de dominio ha habilitado el registro CAA, si su servidor ha habilitado HSTS, el engrapado OCSP y OCSP.
Renovación automática de certificados
EL SSL de Let’s Encrypt tiene una vigencia de 3 meses, Para renovar automáticamente el certificado Let’s Encrypt, simplemente edite el archivo crontab del root.
sudo crontab -e
A continuación, agregue la siguiente línea en la parte inferior.
@monthly certbot renew --quiet && service apache2 restart
Con esto, cada mes se realizará la renovación de su SSL, aun que la vigencia es de 3 meses, es bueno hacer una renovación antes de ese periodo para evitar problemas justo cuando su certificado haya vencido.
Actualización 11 de diciembre 2018
No he querido crear una nueva entrada ya que es solo una línea de código adicional.
Si estás usando CloudFlare, no podrás renovar tu SSL tan fácilmente ya que cloudFlare al momento de crear una regla Firewall, no dejará acceder directamente a la IP de tu dominio, al momento de que el certbot traté de validar la conexión les dará error.
Para solucionar esto, se debe usar la instrucción –webroot, con esto, la validación del dominio no se hace a través de la IP, lo que hace es crear un archivo temporal y si es posible crearlo, se renovará el SSL.
certbot certonly --webroot -w /var/www/html/ -d tudominio.com
–webroot: instrucción que le indica al certbot que realizará una validación temporal mediante acceso web.
-w: instrucción para que le indiques el root de tu dominio y en donde se creará un archivo temporal
/var/www/html: esta es la ruta del root del dominio.
-d: instrucción de dominio a renovar el SSL
tudominio.com: dominio que se debe renovar
Publicaciones relacionadas
11/10/2017
Eliminar gran cantidad de archivos en linux
/bin/rm: Argument list too long. es un error que se muestra cuando tratamos de…
05/19/2018
Cambiar tamaño de SWAP en linux (Ubuntu)
En esta publicación veremos lo fácil que es cambiar el tamaño de un archivo…
09/01/2018
Restablecer contraseña root de MySQL 5.7 en Ubuntu 16.04
Este método me ha servido mucho para recuperar la contraseña root de mysql en…
03/14/2019
Acceso remoto MySQL en Ubuntu
MySql puede permitir conectar de forma remota a su base de datos, con esto se…
09/02/2018
Instalar y Configurar Redis en Ubuntu
Gracias a su velocidad y facilidad de uso, Redis es una opción popular para…
07/15/2017
Comprimir y descomprimir .zip, .gz y .tar.gz por linea de comandos en Linux
Comprimir y descomprimir archivos .zip, .gz y .tar.gz por linea de comandos en…
05/15/2017
Cómo crear un enlace simbólico en Linux
Un enlace simbólico es equivalente a una atajo en windows, sirve mucho para…
06/21/2019
CloudFlare vs CloudFront, Route53 y AWS shield que servicio es más útil
Para mi, CloudFlare es un servicio más útil que CloudFront, route53 y AWS…
12/02/2017
Como instalar Composer en Mac OSx
Tener instalado composer en nuestro ordenar es imprescindible para programar ya…