When: 2022
Why: To get a free ssl certificate on self administrate webserver
Time: 5 min
Tags: Debian, Apache, SSL, Certbot
What’s Certbot?
Certbot is a free, open source software tool for automatically using Let’s Encrypt certificates on manually-administrated websites to enable HTTPS.
Certbot is made by the Electronic Frontier Foundation (EFF), a 501(c)3 nonprofit based in San Francisco, CA, that defends digital privacy, free speech, and innovation.
What you will need:
- Apache Website with an open port 80 (yes, only this port)
- sudo access
1. Install snap package manager and refresh its core:
sudo apt install snapd
sudo snap install core
sudo snap refresh core
2. Install Certbot:
sudo snap install --classic certbot
3. Create a symbolic link to the snap directory:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
4. Configure Certbot with Apache server
sudo certbot --apache
It will ask for the sites you want to activate HTTPS.

Thats all, you certificates where saved to /etc/letsencrypt/live and where deployed to the Apache config files. This is 000-default-le-ssl.conf:

And this is This is 000-default.conf:

Now just restart Apache service:
sudo apt restart apache2
The Certbot packages will renew your certificates before they expire. You can check if there is the cronjob for this task:
systemctl list-timers
You will see all the task that are scheduled on your system:

NOTE:
The site must be in both files: 000-default-le-ssl.conf and 000-default.conf, if not, please add and run:
sudo certbot install --cert-name www.yoursite.com
Subdominio:
Aquí tienes el proceso completo para configurar HTTPS en un subdominio usando Certbot con Apache en tu servidor Linux.
1. Configurar el subdominio en DNS
Antes de instalar el certificado, asegúrate de que tu subdominio (subdominio.tudominio.com
) apunta a la IP pública de tu servidor.
- Accede a la configuración de DNS de tu proveedor de dominio.
- Añade un registro A, con la siguiente configuración:
- Tipo:
A
- Nombre:
subdominio
(por ejemplo,app
paraapp.tudominio.com
) - Valor:
TU_IP_PUBLICA
(ejemplo:123.123.123.123
) - TTL: 300 (valor predeterminado)
- Tipo:
- Espera la propagación de DNS (puede tardar algunos minutos a varias horas). Verifica con:bashCopyEdit
nslookup subdominio.tudominio.com
2. Instalar Apache y Certbot
Si aún no tienes Apache o Certbot instalado, instálalos con los siguientes comandos:
bashCopyEditsudo apt update
sudo apt install apache2 certbot python3-certbot-apache -y
Verifica que Apache esté corriendo correctamente:
bashCopyEditsudo systemctl status apache2
Si no está en ejecución, inícialo con:
bashCopyEditsudo systemctl start apache2
Y habilítalo para que inicie automáticamente al arrancar el sistema:
bashCopyEditsudo systemctl enable apache2
3. Configurar VirtualHost para el subdominio
Crea un archivo de configuración para el subdominio en Apache:
bashCopyEditsudo nano /etc/apache2/sites-available/subdominio.tudominio.com.conf
Agrega el siguiente contenido:
apacheCopyEdit<VirtualHost *:80>
ServerName subdominio.tudominio.com
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/subdominio-error.log
CustomLog ${APACHE_LOG_DIR}/subdominio-access.log combined
</VirtualHost>
Guarda el archivo y ciérralo (Ctrl + X
, luego Y
y Enter
).
Habilita la configuración del sitio:
bashCopyEditsudo a2ensite subdominio.tudominio.com.conf
Reinicia Apache para aplicar los cambios:
bashCopyEditsudo systemctl restart apache2
4. Obtener un certificado SSL para el subdominio
Ejecuta Certbot para obtener un certificado gratuito para el subdominio:
bashCopyEditsudo certbot --apache -d subdominio.tudominio.com
- Introduce tu correo electrónico para notificaciones.
- Acepta los términos de servicio.
- Elige si deseas redirigir todo el tráfico HTTP a HTTPS (se recomienda elegir
Sí
).
Certbot configurará automáticamente Apache para usar el certificado SSL.
5. Verificar la instalación del certificado
Una vez completado el proceso, prueba tu sitio visitando:
bashCopyEdithttps://subdominio.tudominio.com
También puedes verificar el certificado con:
bashCopyEditsudo certbot certificates
6. Configurar renovación automática del certificado
Let’s Encrypt expira cada 90 días, pero Certbot puede renovarlo automáticamente.
Prueba la renovación automática con:
bashCopyEditsudo certbot renew --dry-run
Si todo está correcto, puedes automatizar la renovación con un cron job. Abre el editor de cron con:
bashCopyEditsudo crontab -e
Agrega la siguiente línea para que renueve el certificado automáticamente cada mes:
bashCopyEdit0 3 1 * * /usr/bin/certbot renew --quiet
Esto ejecutará la renovación el día 1 de cada mes a las 3:00 AM.
7. Forzar la redirección HTTP a HTTPS (si es necesario)
Si Certbot no configuró la redirección automáticamente, puedes hacerlo manualmente editando el archivo de configuración del subdominio:
bashCopyEditsudo nano /etc/apache2/sites-available/subdominio.tudominio.com-le-ssl.conf
Asegúrate de que tenga la siguiente configuración para redirigir HTTP a HTTPS:
apacheCopyEdit<VirtualHost *:80>
ServerName subdominio.tudominio.com
Redirect permanent / https://subdominio.tudominio.com/
</VirtualHost>
<VirtualHost *:443>
ServerName subdominio.tudominio.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/subdominio.tudominio.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/subdominio.tudominio.com/privkey.pem
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Guarda el archivo y reinicia Apache:
bashCopyEditsudo systemctl restart apache2
8. Verificar la configuración de HTTPS
Usa el siguiente comando para verificar que la redirección funciona correctamente:
bashCopyEditcurl -I http://subdominio.tudominio.com
Debe redirigirte a https://subdominio.tudominio.com
.
También puedes probar la seguridad del certificado SSL en SSL Labs Test.
9. Solución de problemas comunes
Si tienes problemas durante la instalación o configuración, prueba los siguientes comandos:
- Verificar la configuración de Apache:bashCopyEdit
sudo apachectl configtest
- Ver los logs de errores de Apache:bashCopyEdit
sudo journalctl -u apache2 -f
- Revisar el estado del servicio:bashCopyEdit
sudo systemctl status apache2
- Si necesitas eliminar un certificado, puedes usar:bashCopyEdit
sudo certbot delete --cert-name subdominio.tudominio.com