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.
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
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:
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; } }