Please fill out the fields below so we can help you better. Note: you must provide your domain name to get help. Domain names for issued certificates are all made public in Certificate Transparency logs (e.g. https://crt.sh/?q=example.com), so withholding your domain name here does not increase secrecy, but only makes it harder for us to provide help.
My domain is: dhis2.nih.org.pk
I ran this command: sudo certbot-auto --nginx -d dhis2.nih.org.pk
It produced this output:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for dhis2.nih.org.pk
Waiting for verification...
Challenge failed for domain dhis2.nih.org.pk
http-01 challenge for dhis2.nih.org.pk
Cleaning up challenges
Some challenges have failed.
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: dhis2.nih.org.pk
Type: connection
Detail: Fetching
http://dhis2.nih.org.pk/.well-known/acme-challenge/enj2RtrqkMkOxR3AQbkgt84PP45UJIBKwiKskGxl7aY:
Timeout during connect (likely firewall problem)
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address. Additionally, please check that
your computer has a publicly routable IP address and that no
firewalls are preventing the server from communicating with the
client. If you're using the webroot plugin, you should also verify
that you are serving files from the webroot path you provided.
My web server is (include version): nginx/1.14.0 (Ubuntu)
The operating system my web server runs on is (include version): Ubuntu 18.04
My hosting provider, if applicable, is: Digital Ocean
I can login to a root shell on my machine (yes or no, or I don’t know): yes
I’m using a control panel to manage my site (no, or provide the name and version of the control panel): no
The version of my client is (e.g. output of certbot --version
or certbot-auto --version
if you’re using Certbot): 0.31.0
I have had problems previously with renewing certificates on this server but the command used above worked for me last time I think.
This time after trying many options in desperation I have deleted the certificate and tried to create a new one but I am having the same timeout issue. I suspect this is a web server configuration issue rather than a Let’s Encrypt issue but would welcome any help.
My nginx configuration is:
# apply these settings to all backends
proxy_cache_path /var/cache/nginx keys_zone=dhis:250m inactive=1d;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_cookie_path / "/; secure";
#proxy_cache dhis;
# redirect http to https server
server {
listen 80 default_server;
listen [::]:80;
# rewrite ^ https://$host$request_uri? permanent;
# redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}
# HTTPS server
server {
listen 443 ssl http2;
listen [::]:443 ssl http2 default_server;
root /home/dhis/tomcat-dhis/webapps/ROOT;
server_name dhis2.nih.org.pk;
client_max_body_size 400M;
# ssl stuff
ssl on;
ssl_certificate /etc/letsencrypt/live/dhis2.nih.org.pk/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/dhis2.nih.org.pk/privkey.pem; # managed by Certbot
ssl_session_timeout 30m;
# ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:20m;
# ssl_prefer_server_ciphers on;
# You need to generate the dh parameters before using this setting
# Command: openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
# Serve static files
location ~ (\.js|\.css|\.gif|\.woff|\.ttf|\.eot|\.ico|(/dhis-web-commons/|/images/|/icons/).*\.png)$ {
add_header Cache-Control public;
expires 14d;
}
# Proxy pass to servlet container
location / {
# proxy_pass http://localhost:8080/;
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_buffer_size 128k;
proxy_buffers 8 128k;
proxy_busy_buffers_size 256k;
proxy_read_timeout 5m;
}
# This is quite strict. If you have much older windoze browsers
# to support you might need the line below instead.
#
# ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
# ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
# Enable HSTS
# add_header Strict-Transport-Security max-age=63072000;
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
# Do not allow this site to be displayed in iframes
# add_header X-Frame-Options DENY;
# Do not permit Content-Type sniffing.
add_header X-Content-Type-Options nosniff always;
# inject X-FRAME-OPTIONS in HTTP Header to prevent clickjacking attack.
# add_header X-Frame-Options SAMEORIGIN;
# add_header X-XSS-Protection "1;mode=block";
# add_header Content-Security-Policy "default-src 'self'";
# Breaks things!
# add_header Content-Security-Policy "default-src 'self'; script-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self' data:; frame-src 'self'; connect-src 'self' https://apis.google.com; object-src 'none' ";
# nominate a backend as the default
# rewrite ^/$ /dhis/;
# Proxy pass to servlet containers
# location /dhis { proxy_pass http://localhost:8080/dhis; }
}
The site worked fine until the certificate expired. I would set up a cron job if I could find a reliable way of renewing the certificate.
Thanks for any help,
Paul
Edit: obviously I have checked that the site is not behind a firewall.