Let's Encrypt es una autoridad de certificación que proporciona certificados SSL gratuitos para sitios web. Se lanzó en 2014 con el objetivo de que todos los sitios web fueran seguros y HTTP.
Además de ofrecer certificados SSL, también ayuda a la implementación y renovación automática de certificados. Let's Encrypt es la autoridad de certificación más grande del mundo, utilizada por más de 250 millones de sitios web.
Al escribir esta publicación, Let's Encrypt admite la instalación automática de certificados en Apache, Nginx, Plex y Haproxy.
Aquí, veremos cómo instalar el certificado Let's Encrypt SSL en Apache en Debian 11.
Requisitos
Instalar servidor web Apache
Le recomiendo que instale el servidor web Apache en su sistema antes de continuar.
LEER: Cómo instalar la pila LAMP en Debian 11
O
Usa el apt
comando para instalar el servidor web Apache.
sudo apt update sudo apt install -y apache2
Habilitar módulos
Use el siguiente comando para habilitar SSL y reescribir módulos.
sudo a2enmod ssl rewrite
Crear servidor virtual
Primero, necesitaremos crear un servidor virtual Apache para servir la versión HTTP de su sitio web.
sudo nano /etc/apache2/sites-available/www.itzgeek.net.conf
Utilice la siguiente configuración para su sitio web. Recuerde cambiar los valores según sus requisitos. Si no usa el subdominio www, puede eliminar el ServerAlias
.
<VirtualHost *:80> ServerName itzgeek.net ServerAlias www.itzgeek.net ServerAdmin [email protected] DocumentRoot /var/www/html/www.itzgeek.net ErrorLog ${APACHE_LOG_DIR}/www.itzgeek.net_error.log CustomLog ${APACHE_LOG_DIR}/www.itzgeek.net_access.log combined <Directory /var/www/html/www.itzgeek.net> Options FollowSymlinks AllowOverride All Require all granted </Directory> </VirtualHost>
Una vez que haya creado el archivo de configuración del host virtual, habilite el sitio.
sudo a2ensite www.itzgeek.net
A continuación, cree un directorio raíz para guardar los archivos de su sitio web.
sudo mkdir -p /var/www/html/www.itzgeek.net/
Luego, cambie la propiedad y el grupo del directorio.
sudo chown -R www-data:www-data /var/www/html/www.itzgeek.net/
Finalmente, coloque el archivo HTML de prueba en la raíz del documento del sitio web.
echo "This is a test site @ www.itzgeek.net" | sudo tee /var/www/html/www.itzgeek.net/index.html
Reinicie el servicio Apache para volver a leer las configuraciones.
sudo systemctl reload apache2
Crear/Actualizar Registro DNS
Para generar un certificado SSL de Let's Encrypt, deberá apuntar su dominio a la IP de su servidor. Entonces, vaya a su registrador de dominio y cree un registro A/CNAME para su dominio. Por ejemplo, la siguiente imagen muestra el registro A/CNAME para el dominio www.itzgeek.net.
NOTA:Después de realizar cambios en el registro DNS, deberá esperar de unos minutos a horas, según el TTL que haya establecido para el registro DNS.
Instalar certificado Let's Encrypt SSL en Apache
Instalar Certbot
El cliente Certbot ACME maneja la emisión e instalación del certificado sin tiempo de inactividad. Está disponible como paquete instantáneo para el sistema operativo Debian. Entonces, primero, instale el paquete Snapd.
sudo apt update sudo apt install -y snapd
Luego, actualice el complemento a la última versión.
sudo snap install core; sudo snap refresh core
Finalmente, instale el cliente Certbot usando el comando snap y vincúlelo para que pueda invocar el comando certbot desde cualquier lugar, independientemente del directorio de trabajo actual.
sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
Instalar certificado Let's Encrypt
Use el comando certbot para crear un certificado de Let's Encrypt y configure Apache para usar el certificado.
sudo certbot --apache
Deberá seguir las indicaciones interactivas e instalar el certificado. Dado que he creado un host virtual para itzgeek.net y www.itzgeek.net, también tendré que instalar certificados SSL para ambos dominios. Luego, redirigiré todo el tráfico a www.itzgeek.net a través de reglas de reescritura.
Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] << Enter Email ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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. Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y << Agree to Terms and Conditions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, once your first certificate is successfully issued, 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 << Subscriber to Newsletter Account registered. Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: itzgeek.net 2: www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1,2 << Select the site to Install Let's Encrypt SSL Certificate Requesting a certificate for itzgeek.net and www.itzgeek.net Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/itzgeek.net/fullchain.pem Key is saved at: /etc/letsencrypt/live/itzgeek.net/privkey.pem This certificate expires on 2022-01-21. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for itzgeek.net to /etc/apache2/sites-available/www.itzgeek.net-le-ssl.conf Successfully deployed certificate for www.itzgeek.net to /etc/apache2/sites-available/www.itzgeek.net-le-ssl.conf Congratulations! You have successfully enabled HTTPS on https://itzgeek.net and https://www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Una vez que active HTTPS para su dominio, el cliente de Certbot colocará las reglas de reescritura necesarias para redirigir el tráfico de HTTP al sitio HTTPS.
En mi caso, ha colocado dos reglas para las siguientes redirecciones.
- http://itzgeek.net>> https://itzgeek.net
- http://www.itzgeek.net>> https://www.itzgeek.net
Como puede ver, no se llega a la primera redirección a la versión www HTTPS del dominio. Por lo tanto, es posible que deba seguir la sección a continuación para configurarlo.
Redirigir solicitudes HTTP que no sean www a www HTTPS con Apache
Es posible que desee configurar el servidor web Apache para redirigir el tráfico desde el sitio HTTP que no es www al sitio WWW HTTPS, es decir, http://itzgeek.net>> https://www.itzgeek.net .
Edite el archivo de host virtual Let's Encrypt SSL (no su archivo de host virtual original).
sudo nano /etc/apache2/sites-available/www.itzgeek.net-le-ssl.conf
Agregue las siguientes reglas antes del </VirtualHost>
. Cambie el nombre de dominio según sus requisitos.
# Redirect NON-WWW HTTP to WWW HTTPS RewriteEngine on RewriteCond %{SERVER_NAME} =itzgeek.net RewriteRule ^ https://www.itzgeek.net%{REQUEST_URI} [END,NE,R=permanent]1,L]
Luego, reinicie el servicio Apache.
sudo systemctl restart apache2
Verificar el certificado Let's Encrypt
Puede verificar el certificado de Let's Encrypt visitando su sitio web.
http://tu-http-sitio-webO
https://tu-https-sitio-webDebería obtener la versión HTTPS de su sitio ahora.
Certificado SSL de prueba
Pruebe su certificado Let's Encrypt SSL para detectar cualquier problema y sus clasificaciones de seguridad en la siguiente URL.
https://www.ssllabs.com/ssltest/analyze.html?d=www.itzgeek.netRenovar el certificado de Let's Encrypt
Como sabes, los certificados de Let's Encrypt tienen una validez de 90 días y debes asegurarte de renovarlos a tiempo. El proceso de renovación ahora está automatizado y gracias al servicio systemd proporcionado por el cliente Certbot. Por lo tanto, no tiene que renovarlos manualmente.
Sin embargo, se recomienda probar las renovaciones de certificados simulando la renovación automática de certificados SSL ejecutando el siguiente comando.
sudo certbot renew --dry-run
Salida:
Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/itzgeek.net.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Account registered. Simulating renewal of an existing certificate for itzgeek.net and www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations, all simulated renewals succeeded: /etc/letsencrypt/live/itzgeek.net/fullchain.pem (success) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Si el resultado confirma que la renovación de la prueba es exitosa, la renovación automática ocurrirá como se esperaba.
Conclusión
Eso es todo. Espero que haya aprendido a instalar el certificado SSL de Let's Encrypt en Apache en Debian 11.