Let’s Encrypt es una entidad de certificación (CA) que proporciona una manera sencilla de obtener e instalar certificados de TLS/SSL gratuitos, lo que permite usar HTTPS cifrado en servidores web. Simplifica el proceso al proporcionar un cliente de software, Certbot, que intenta automatizar la mayoría (cuando no todos) de los pasos requeridos. Actualmente, todo el proceso de obtención e instalación de un certificado está totalmente automatizado en Apache y Nginx.
En este tutorial, utilizará Certbot para obtener un certificado de SSL gratuito para Apache en Ubuntu 18.04 y configurará su certificado para que se renueve de forma automática.
En este tutorial se utilizará un archivo de host virtual de Apache por separado en lugar del archivo de configuración predeterminado. Recomendamos crear nuevos archivos de host virtual de Apache para cada dominio, ya que permite evitar errores comunes y mantiene los archivos predeterminados como una configuración de reserva.
Para este tutorial, necesitará lo siguiente:
Un servidor de Ubuntu 18.04 configurado conforme a este tutorial de configuración inicial para servidores de Ubuntu 18.04, incluido un usuario sudo no root y un firewall.
Un nombre de dominio registrado por completo. En este tutorial, se utilizará your_domain como ejemplo. Puede adquirir un nombre de dominio en Namecheap, obtener uno gratuito en Freenom o utilizar un registrador de dominios de su elección.
Los dos registros DNS que se indican a continuación se han configurado para su servidor. Puede utilizar esta introducción al DNS de DigitalOcean para obtener más información sobre cómo agregarlos.
your_domain
orientado a la dirección IP pública de su servidor.www.your_domain
orientado a la dirección IP pública de su servidor.Apache instalado conforme a Cómo instalar Apache en Ubuntu 18.04. Compruebe que tenga un archivo de host virtual para su dominio. En este tutorial, se utilizará /etc/apche2/sites-available/your_domain.conf
como ejemplo.
El primer paso para utilizar Let’s Encrypt para obtener un certificado SSL es instalar el software Certbot en su servidor.
Existe mucha actividad relacionada con el desarrollo de Certbot. Esto hace que sus paquetes proporcionados por Ubuntu suelan perder vigencia. Sin embargo, los desarrolladores de Certbot mantienen un repositorio de software de Ubuntu con versiones actualizadas, de modo que en su lugar usaremos ese repositorio.
Primero, agregue el repositorio:
- sudo add-apt-repository ppa:certbot/certbot
Debe presionar ENTER
para aceptar.
Instale el paquete Apache de Certbot con apt
:
- sudo apt install python-certbot-apache
Con esto, Certbot estará listo para utilizarse. Sin embargo, para que configure SSL para Apache debemos verificar parte de la configuración de Apache.
Certbot debe poder encontrar el host virtual adecuado en su configuración de Apache para poder configurar SSL de forma automática. De forma específica, lo hace buscando una directiva ServerName
que coincida con el dominio para el que usted solicite un certificado.
Si siguió el paso de configuración del host virtual en el tutorial de instalación de Apache, debe disponer de un bloque VirtualHost para su dominio en /etc/apache2/sites-available/your_domain.com.conf
con la directiva ServerName
ya establecida de forma adecuada.
Para comprobarlo, abra el archivo de host virtual para su dominio utilizando nano
o el editor de texto que prefiera:
- sudo nano /etc/apache2/sites-available/your_domain.conf
Busque la línea de ServerName
existente. Debería tener el siguiente aspecto:
...
ServerName your_domain;
...
Si esto sucede, salga de su editor y continúe con el paso siguiente.
De lo contrario, actualícelo para que coincida. A continuación, guarde el archivo, cierre el editor y verifique la sintaxis de las modificaciones de la configuración:
- sudo apache2ctl configtest
Si encuentra un mensaje de error, vuelva a abrir el archivo de host virtual y verifique que no haya errores ortográficos y que no falten caracteres. Una vez que la sintaxis de su archivo de configuración sea correcta, vuelva a abrir Apache para cargar la configuración nueva:
- sudo systemctl reload apache2
Ahora, Certbot podrá encontrar el bloque VirtualHost correcto y actualizarlo.
A continuación, actualizaremos el firewall para permitir el tráfico de HTTPS.
Si tiene habilitado el firewall de ufw
, como se recomienda en las guías de los requisitos previos, deberá ajustar la configuración para permitir el tráfico de HTTPS. Afortunadamente, Apache registra algunos perfiles con ufw
después de la instalación.
Puede ver la configuración actual escribiendo lo siguiente:
- sudo ufw status
Probablemente tendrá este aspecto, lo cual significa que solo se permite el tráfico de HTTP al servidor web:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
Para permitir de forma adicional el tráfico de HTTPS, habilite el perfil de Apache Full y borre el permiso del perfil redundante de Apache:
- sudo ufw allow 'Apache Full'
- sudo ufw delete allow 'Apache'
Ahora, su estado debería tener el siguiente aspecto:
- sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
A continuación, ejecutaremos Certbot y buscaremos nuestros certificados.
Certbot ofrece varias alternativas para obtener certificados SSL a través de complementos. El complemento de Apache se encargará de reconfigurar Apache y volver a cargar la configuración cuando sea necesario. Para utilizar este complemento, escriba lo siguiente:
- sudo certbot --apache -d your_domain -d www.your_domain
Con esto, se ejecuta certbot
con el complemento --apache
, usando -d
a fin de especificar los nombres para los cuales desea que el certificado tenga validez.
Si es la primera vez que ejecuta certbot
, se le solicitará introducir una dirección de correo electrónico y aceptar las condiciones de servicio. A continuación, certbot
se comunicará con el servidor de Let’s Encrypt y, luego, realizará una comprobación para verificar que usted controle el dominio para el que solicita un certificado.
Si la comprobación se realiza correctamente, certbot
le preguntará cómo desea configurar sus ajustes de HTTPS:
OutputPlease 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):
Seleccione su elección y presione ENTER
. La configuración se actualizará y Apache se volverá a cargar para aplicar los ajustes nuevos. certbot
concluirá con un mensaje que le indicará que el proceso se realizó con éxito y le brindará información sobre la ubicación de sus certificados:
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2018-07-23. 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-le
Así, sus certificados se quedarán descargados, instalados y cargados. Intente volver a cargar su sitio web utilizando https://
y observe el indicador de seguridad de su navegador. Debería indicar que el sitio cuenta con la protección correcta, en general, con un ícono de un candado verde. Si prueba su servidor utilizando SSL Labs Server Test, obtendrá una calificación A.
Terminaremos con una prueba del proceso de renovación.
Los certificados de Let’s Encrypt son válidos únicamente por noventa días. El propósito de esto es incentivar a los usuarios a automatizar sus procesos de renovación de certificados. El paquete de certbot
que instalamos se encargará de esto agregando una secuencia de comandos de renovación a /etc/cron.d
. Esta secuencia de comandos se ejecuta dos veces al día y renovará de forma automática cualquier certificado que caduque en treinta o menos días.
Para probar el proceso de renovación, puede hacer un simulacro con certbot
:
- sudo certbot renew --dry-run
Si no ve errores, no habrá inconvenientes. Cuando sea necesario, Certbot renovará sus certificados y volverá a cargar Apache para registrar los cambios. Si el proceso de renovación automática falla, Let’s Encrypt enviará un mensaje a la dirección de correo electrónico que especificó en el que se le advertirá cuándo se aproxime la fecha de vencimiento de sus certificados.
En este tutorial, instaló el certbot
del cliente Let’s Encrypt, descargó certificados SSL para su dominio, configuró Apache para utilizarlos y definió la renovación automática de certificados. Si tiene preguntas adicionales sobre la utilización de Certbot, la documentación es un buen punto de partida.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
buenas noches, gracias por el aporte. si tengo 2 o más dominios. es posible seguir los pasos para cada uno de los dominios y funcionará igual?
Chicas, gracias por compartir. quería comentarles que pude instalar un certificado Wildcard con el comando:
sudo certbot certonly –manual -d *.example.com -d example.com –agree-tos –no-bootstrap –manual-public-ip-logging-ok –preferred-challenges dns-01 –server https://acme-v02.api.letsencrypt.org/directory
He llegado a recibir el «Congratulations» del certificado, sin embargo la página sigue sin cargar en HTTPS. En uno de los Post que revisé me dicen que debo configurar manualmente el Virtual Host, pero lo he intentado y no logro hacer que cargue en HTTPS.
Les agradecería que pudieran ayudarme.
Hola, gracias por compartir. Me ha sido muy útil vuestras indicaciones. Solo una cosa, es un pequeño error de typeo, en “requisitos previos” en la linea “/etc/apche2/sites-available/your_domain.conf” falta la letra “a” de apache2.
Solo eso, de resto todo perfecto.
Saludos.