Eu não permito que o certbot crie minhas configurações de servidor web. Eu francamente não confio para acertar, já que ele já está fazendo algumas práticas pouco eficientes.
Então eu recebo certificados com certbot certonly --webroot -w /var/www -d domain -d domain
...
E a configuração do meu nginx fica assim (para um domínio de exemplo):
server {
server_name www.yes-www.org yes-www.org;
access_log off;
include includes/listen-80;
include includes/cloudflare;
include includes/letsencrypt;
return 301 https://$host$request_uri;
}
Para a porta 80, estou apenas exibindo nomes de host e redirecionando para https e www incondicionalmente.
server {
server_name yes-www.org;
access_log off;
ssl_certificate /etc/letsencrypt/live/www.yes-www.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.yes-www.org/privkey.pem;
include includes/listen-443;
include includes/cloudflare;
include includes/ssl;
include includes/hsts;
include includes/letsencrypt;
return 301 https://www.yes-www.org$request_uri;
}
Para a porta 443, não-www, estou apenas redirecionando para www incondicionalmente.
server {
server_name www.yes-www.org;
root /srv/www/yes-www.org;
access_log /var/log/nginx/yes-www.org-access.log nginx;
access_log /var/log/nginx/cache.log cache;
error_log /var/log/nginx/yes-www.org-error.log;
ssl_certificate /etc/letsencrypt/live/www.yes-www.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.yes-www.org/privkey.pem;
include includes/listen-443;
include includes/cloudflare;
include includes/letsencrypt;
include includes/ssl;
include includes/hsts;
include includes/favicon;
include includes/wordpress;
include includes/php;
include /srv/www/yes-www.org/nginx.conf;
location ~ /\.(ht|git) {
deny all;
}
}
E finalmente aqui estou servindo um site.
Observe que o conteúdo de /etc/nginx/includes/letsencrypt
é:
location /.well-known/acme-challenge/ {
root /var/www;
try_files $uri =404;
}
O que torna certbot certonly
acima do trabalho.