Hace algún tiempo quería comenzar a usar letsencrypt. Pero me daba un poco de pereza ponerme manos a la obra y siempre lo estaba postergando un poco. Finalmente esta mañana me puse con ello, a continuación un resumen de como se hace.
Lo primero es descargar el binario, en mi caso lo dejo en /usr/local/sbin para poder ejecutarlo más adelante, tanto para actualizar el certificado como para añadir nuevos certificados.
cd /usr/local/sbin
sudo wget https://dl.eff.org/certbot-auto
sudo chmod a+x /usr/local/sbin/certbot-auto
Es necesario publicar el directorio .well-know dentro de tu nginx, edita el fichero pertinente a la configuración de tu dominio, en mi caso /etc/nginx/sites-enabled/desarrolla2.com.conf. letsencrypt necesita este paso para comprobar que tu eres el propietario del dominio, algo parecido al paso que tienes que hacer para añadir tu sitio a google webmaster tools.
En mi caso tengo varias reglas .location simplemente pon esta a continuación de las demás.
server {
...
location ~ /.well-known {
allow all;
}
...
}
Antes de reiniciar nginx, comprueba que no has roto nada.
sudo nginx -t
Reinicia o recarga el servicio para que los cambios sean aplicados.
sudo service nginx restart
Ahora ejecuta lo siguiente. No olvides de poner tu webroot-path apuntando al directorio raiz de tu sitio, y añadir tantos parámetros -d como dominios quieras que estén en el certificado.
certbot-auto certonly -a webroot --webroot-path=/usr/share/nginx/desarrolla2.com/web -d desarrolla2.com -d www.desarrolla2.com
Ya casi lo tienes aparecerá un mensaje donde te dirá que indiques una dirección de correo electrónico y aceptes las condiciones de uso.
// -- imagen here
Te va a generar una serie de ficheros, puedes verlos ejecutando:
ls -l /etc/letsencrypt/live/desarrolla2.com
Edita de nuevo tu fichero de configuración del sitio en nginx y añade lo siguiente dentro del bloque server.
server {
...
# Al principio del todo, quitando las otras entradas listen
listen 443 ssl;
...
# Al final del todo añade
ssl_certificate /etc/letsencrypt/live/desarrolla2.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/desarrolla2.com/privkey.pem;
...
}
Casi estamos terminando. En mi caso quiero forzar la conexión a través de https, ya que tengo certificado vamos a forzar su uso, para ello necesito hacer un 301 desde las peticiones http hacia las https, por lo que añadimos lo siguiente al final del fichero.
server {
listen 80;
server_name desarrolla2.com www.desarrolla2.com;
return 301 https://$host$request_uri;
}
Comprueba que todo está bien y luego reinicia nginx.
sudo nginx -t
sudo service nginx restart
Asegúrate de probar que todo está funcionando bien y que no te has dejado nada accediendo a través de tu navegador.
Los certificados de letsencryt caducan al poco tiempo, por lo que necesitamos que periodicamente los certificados sean renovados, vamos a usar para ello crontab. Añade las siguientes lineas.
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log
35 2 * * 1 /etc/init.d/nginx reload
Ya lo tienes!
Publicado el
Actualizado por última vez el