2017-06-13 1 views
0

Je rencontre un problème avec le renouvellement du certificat letsencrypt. Pourquoi je lance certbot renew --dry-run, le renouvellement échoue avec le site retour d'un 404.Letsencrypt nginx, renew renvoie un 404

Voir ma config nginx ci-dessous (Jinja temlate). La variable {{ ssl_challenge_dir }} est la même que celle utilisée pour --webroot-path lorsque j'ai initialement généré les certificats.

Si je place le fichier avec un contenu factice dans {{ ssl_challenge_dir }}/.well-known/acme-challenge/test.html, puis ce fichier est servi parfaitement sans soulever 404.

Je suis un peu perplexe. Pour autant que je comprenne quand certbot s'exécute, il crée un fichier temporaire sous ce même répertoire, puis essaie de le demander. Mais il continue de renvoyer 404.

Quelqu'un sait ce que je fais mal ici?

server_tokens off; 
more_set_headers 'Server: '; 

# Letsencrypt and SSL Redirect 
server { 
    listen 80; 
    server_name {{ site.domain }} {{ site.name }}; 

    # Letsencrypt challange 
    location /.well-known/acme-challenge/ { 
     root {{ site.ssl_challenge_dir }}; 
     allow all; 
     try_files $uri $uri/ =404; 
    } 

    # Redirect all other requests to https 
    location/{ 
     return 301 https://{{ site.name }}$request_uri; 
     rewrite ^/(.*) https://{{ site.name }}/$1 permanent; 
    } 
} 

server { 
    server_name {{ site.name }}; 
    listen 443; 
    access_log {{ user.logs_dir }}/nginx_access.log; 
    error_log {{ user.logs_dir }}/nginx_error.log; 

    client_max_body_size 10M; 
    gzip on; 
    gzip_types text/plain image/png image/jpg; 

    ssl on; 
    ssl_session_cache shared:SSL:10m; 
    ssl_session_timeout 10m; 
    ssl_certificate /etc/letsencrypt/live/{{ site.name }}/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/{{ site.name }}/privkey.pem; 

    # Resources 
    location ^~ /media/ { 
     root {{ webapp.resources_dir }}; 
     expires 31d; 
     gzip_static on; 
    } 

    location ^~ /static/ { 
     root {{ webapp.resources_dir }}; 
     expires 0; 
     gzip_static on; 
    } 

    location/{ 
     {% if site.auth_required %} 
     auth_basic "Restricted"; 
     auth_basic_user_file {{ user.home_dir }}/.htpasswd; 
     {% endif %} 

     proxy_pass http://unix:{{ webapp.socket }}:; 
     # proxy_pass_header Server; 

     proxy_set_header Host $http_host; 
     proxy_redirect off; 

     proxy_connect_timeout 600; 
     proxy_send_timeout 600; 
     proxy_read_timeout 600; 
     send_timeout 600; 

     proxy_set_header X-Scheme $scheme; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header X-Forwarded-Protocol ssl; 
    } 
} 

Répondre

0

Ok, donc j'ai découvert ce que je faisais mal. Aucun problème avec ma configuration nginx.

Mon problème était que je --webroot lors de l'exécution certbot pour obtenir les certs d'origine, et fondamentalement juste ne pas se rendre compte que le renouvellement de commande doit également être exécuté avec --webroot