Let's Encrypt es una Autoridad de certificación (CA) que proporciona certificados SSL gratuitos con un cliente automatizado. Al utilizar un certificado SSL Let's Encrypt, puede cifrar el tráfico entre su sitio web y sus visitantes. Todo el proceso es simple y las renovaciones pueden automatizarse. Además, tenga en cuenta que la instalación o renovación de certificados no causa ningún tiempo de inactividad.
En este tutorial, utilizaremos Certbot para obtener, instalar y renovar automáticamente su certificado SSL. Certbot está siendo desarrollado activamente por la Electronic Frontier Foundation (EFF) y es el cliente recomendado para Let's Encrypt.
Prerrequisitos
- Una instancia de Vultr que ejecuta Ubuntu 16.04
- Un nombre de dominio registrado que apunta a su servidor
- Nginx
Instalar Certbot
Para obtener un certificado SSL de Let's Encrypt, debe instalar el cliente Certbot en su servidor.
Agrega el repositorio. Presione la ENTERtecla cuando se le solicite aceptar.
add-apt-repository ppa:certbot/certbot
Actualiza la lista de paquetes.
apt-get update
Proceda instalando Certbot y el paquete Nginx de Certbot.
apt-get -y install python-certbot-nginx
Configurando Nginx
Certbot configura automáticamente SSL para Nginx, pero para hacerlo necesita encontrar el bloque de servidor en su archivo de configuración de Nginx. Lo hace haciendo coincidir la server_name
directiva en el archivo de configuración con el nombre de dominio para el que solicita un certificado.
Si está utilizando el archivo de configuración predeterminado, /etc/nginx/sites-available/default
ábralo con un editor de texto como nano
y busque la server_name
directiva. Reemplace el guión bajo, _
con sus propios nombres de dominio:
nano /etc/nginx/sites-available/default
Después de editar el archivo de configuración, la server_name
directiva debería tener el siguiente aspecto. En este ejemplo, supongo que su dominio es example.com y que está solicitando un certificado para example.com y www.example.com.
server_name example.com www.example.com;
Continúe verificando la sintaxis de sus ediciones.
nginx -t
Si la sintaxis es correcta, reinicie Nginx para usar la nueva configuración. Si recibe algún mensaje de error, vuelva a abrir el archivo de configuración y verifique si hay algún error tipográfico, luego intente nuevamente.
systemctl restart nginx
Obtención de un certificado SSL Let's Let's Encrypt
El siguiente comando obtendrá un certificado para usted. Edite su configuración de Nginx para usarla y vuelva a cargar Nginx.
certbot --nginx -d example.com -d www.example.com
También puede solicitar un certificado SSL para dominios adicionales. Simplemente agregue la -d
opción " " tantas veces como desee.
certbot --nginx -d example.com -d www.example.com -d example.net -d example.net
En caso de que solo desee obtener el certificado de Let's Encrypt sin instalarlo automáticamente, puede usar el siguiente comando. Esto realiza cambios temporales en su configuración de Nginx para obtener el certificado y los revierte una vez que el certificado ha sido descargado.
certbot --nginx certonly -d example.com -d www.example.com
Si está ejecutando Certbot por primera vez, se le pedirá que ingrese una dirección de correo electrónico y acepte los términos del servicio. Esta dirección de correo electrónico se utilizará para avisos de renovación y seguridad. Una vez que haya proporcionado una dirección de correo electrónico, Certbot solicitará un certificado de Let's Encrypt y ejecutará un desafío para verificar que controle el dominio en cuestión.
Si Certbot puede obtener un certificado SSL, le preguntará cómo desea configurar sus HTTPS
ajustes. Puede redirigir a los visitantes que visitan su sitio web a través de una conexión no segura o dejarlos acceder a través de la conexión no segura. Por lo general, esto debería estar habilitado porque garantiza que los visitantes solo accedan a la versión de su sitio web protegida por SSL. Seleccione su elección, luego presione ENTER.
Please 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):
Finalmente, Certbot confirmará que el proceso fue exitoso y dónde se almacenan sus certificados. Sus certificados ya están descargados e instalados.
Renovación automatizada
Como Let's Encrypt es una autoridad de certificación gratuita, y para alentar a los usuarios a automatizar el proceso de renovación, los certificados solo son válidos por 90 días. Certbot se encargará de renovar los certificados automáticamente. Lo hace corriendo certbot renew
dos veces al día a través de systemd
.
Puede verificar que la renovación automática esté funcionando ejecutando este comando.
certbot renew --dry-run
También puede renovar manualmente su certificado en cualquier momento ejecutando el siguiente comando.
certbot renew
Configuración mejorada
Los comandos anteriores obtienen e instalan el certificado SSL con una configuración adecuada para la mayoría de los casos. Si desea implementar medidas de seguridad avanzadas para su sitio web, puede usar el siguiente comando para obtener el certificado.
certbot --nginx --rsa-key-size 4096 --must-staple -d example.com -d www.example.com
El --rsa-key-size 4096
utiliza una clave RSA de 4096 bits en lugar de clave de 2048 bits, que es más seguro. La desventaja de esto es que una clave más grande resulta en una ligera sobrecarga de rendimiento. Además, los navegadores y dispositivos más antiguos pueden no admitir claves RSA de 4096 bits.
La --must-staple
suma de la extensión de grapado de OCSP necesidad para el certificado y configura Nginx para OCSP grapado. Esta extensión permite a los navegadores verificar que su certificado no ha sido revocado y que se puede confiar en él. Sin embargo, no todos los navegadores admiten esta función.