letsencrypt

Conexiones seguras HTTPS: certificados TSL con Let's Encrypt y configuración de NGINX

To Do: resolver problema con registro CAA de los DNS

Al intentar obtener el certificado TSL de Let's Encrypt usando certbot se obtiene el siguiente error:

sudo certbot certonly --webroot -w /var/www/wiki.hi.ee.upm.es/ -d wiki.hi.ee.upm.es
Failed authorization procedure. hi.ee.upm.es (http-01): urn:acme:error:caa :: CAA record for hi.ee.upm.es prevents issuance
 
IMPORTANT NOTES:
 - The following errors were reported by the server:
 
   Domain: hi.ee.upm.es
   Type:   None
   Detail: CAA record for hi.ee.upm.es prevents issuance

Lo cual quiere decir que hay que eliminar el registro CAA asociado a hi.ee.upm.es y habitat.aq.upm.es o bien añadir letsencrypt.org al registro CAA existente.

Más información sobre cómo solucionar el problema.

Cómo instalar certbot en el servidor

Para instalar Lets Encrypt y certbot en Debian Jessie hay que habilitar los backports, añadiendo la siguiente línea al archivo

/etc/apt/sources.list

:

deb http://ftp.debian.org/debian jessie-backports main

Luego actualizamos el listado de paquetes e instalamos certbot:

sudo apt-get update
sudo apt-get install certbot

En marzo de 2018, ha sido necesario actualizar a la versión de backports de certbot:

sudo apt-get update
sudo apt-get -t strecht-backports install certbot

Cómo activar la navegación segura HTTPS en un subdominio

Para instalar el certificado TSL usaremos certbot que automatiza casi todo el proceso. Lo único que hay que hacer manualmente es actualizar la configuración del virtual host de Nginx.

Tenemos que completar los siguientes pasos:

  • Preparar el virtual host de Nginx para poder ejecutar certbot.
  • Ejecutar certbot para instalar el certificado.
  • Modificar el virtual host de Nginx para que responda a las peticiones HTTPS.

Editamos el archivo de configuración del virtual host de Nginx. Añadimos:

location '/.well-known' {
 default_type "text/plain";
}

y comentamos la línea:

# include prohibido.rules;

Reiniciamos Nginx:

sudo service nginx restart

Ahora podemos ejecutar certbot:

sudo certbot certonly --webroot -w /ruta/a/la/carpeta/del/virtual/host -d subdominio.habitat.aq.upm.es

Por último modificamos la configuración del virtual host:

server {
        listen 80;
        listen 443 ssl http2 default_server;
        server_name subdominio.aq.upm.es www.subdominio.aq.upm.es;
 
        ssl_certificate /etc/letsencrypt/live/subdominio.habitat.aq.upm.es/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/subdominio.habitat.aq.upm.es/privkey.pem;
        add_header Strict-Transport-Security "max-age=31536000";
 
        include /etc/letsencrypt/options-ssl-nginx.conf;
 
        root /ruta/a/la/carpeta/del/virtual/host;
        index lista.php lista.html lista.htm;
 
        # Logs
        access_log /habitat/www/log/habitat/subdominio.visitas.log;
        error_log /habitat/www/log/subdominio.errores.log;
 
        include gzip.conf;
 
        location / {
                if ($scheme = http) {
                        return 301 https://$server_name$request_uri;
                }
                try_files $uri $uri/ lista.html;
        }
 
        location '/.well-known' {
                default_type "text/plain";
        }
 
        location ~ \.(html|php)$ {
                try_files $uri =404;
                include fastcgi_params;
                fastcgi_intercept_errors on;
                fastcgi_pass unix:/run/wiki.sock;
                fastcgi_index lista.html;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
 
       include prohibido.rules;
 
       location ~ ^/cgi-bin/.*$ {
                root /habitat/www;
                gzip off;
                include fastcgi_params;
                fastcgi_intercept_errors on;
                fastcgi_pass  unix:/run/fcgiwrap.socket;
                fastcgi_param   PATH_INFO         $fastcgi_path_info;
                fastcgi_param SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
        }
 
}
letsencrypt.txt · Última modificación: 2018/03/31 18:45 por root