[GH-ISSUE #792] SSL Certs Expiry Date Does Not Update with Each Renewal. #671

Closed
opened 2026-02-26 06:33:56 +03:00 by kerem · 9 comments
Owner

Originally created by @korshakov on GitHub (Dec 26, 2020).
Original GitHub issue: https://github.com/NginxProxyManager/nginx-proxy-manager/issues/792

In admin page SSL Certificates when you create first cert the date is correct in future, but after a while the cert bot renew the cert automatically it does not update expiry date on that page. When renew the cert manually in logs it will say basically no need to renew yet, but then it updates the expiry date in admin panel. See screenshot of domains which looks like they are expired according to the admin panel, but the certs are actually ok.

https://snipboard.io/ysdMXG.jpg

Originally created by @korshakov on GitHub (Dec 26, 2020). Original GitHub issue: https://github.com/NginxProxyManager/nginx-proxy-manager/issues/792 In admin page SSL Certificates when you create first cert the date is correct in future, but after a while the cert bot renew the cert automatically it does not update expiry date on that page. When renew the cert manually in logs it will say basically no need to renew yet, but then it updates the expiry date in admin panel. See screenshot of domains which looks like they are expired according to the admin panel, but the certs are actually ok. [https://snipboard.io/ysdMXG.jpg](https://snipboard.io/ysdMXG.jpg)
kerem 2026-02-26 06:33:56 +03:00
  • closed this issue
  • added the
    stale
    bug
    labels
Author
Owner

@moorsey commented on GitHub (Feb 27, 2021):

Just confirming this one and subbing for any updates

<!-- gh-comment-id:787056985 --> @moorsey commented on GitHub (Feb 27, 2021): Just confirming this one and subbing for any updates
Author
Owner

@jc21 commented on GitHub (Feb 27, 2021):

This can sometimes happen if certbot fails to renew one of the many certs. Does the docker logs indicate that any of them failed? You can also manually check for failures by running

/usr/bin/certbot renew --non-interactive --config "/etc/letsencrypt.ini" --preferred-challenges "dns,http" --disable-hook-validation

inside the docker container.

<!-- gh-comment-id:787057666 --> @jc21 commented on GitHub (Feb 27, 2021): This can sometimes happen if certbot fails to renew one of the many certs. Does the docker logs indicate that any of them failed? You can also manually check for failures by running ```bash /usr/bin/certbot renew --non-interactive --config "/etc/letsencrypt.ini" --preferred-challenges "dns,http" --disable-hook-validation ``` inside the docker container.
Author
Owner

@moorsey commented on GitHub (Mar 4, 2021):

Thanks @jc21

Can't see any certs that say they have an error via the web page

Ran the command you suggested, but get an error. Appears there is a folder "/etc/letsencrypt", but no .ini file inside, just futher folders, "accounts", "archive", "csr" etc

docker exec nginxproxymanager_app_1 /usr/bin/certbot renew --non-interactive --config "/etc/letsencrypt.ini" --preferred-challenges "dns,http" --disable-hook-validation
usage:
  certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...

Certbot can obtain and install HTTPS/TLS/SSL certificates.  By default,
it will attempt to use a webserver both for obtaining and installing the
certificate.
certbot: error: File not found: /etc/letsencrypt.ini
<!-- gh-comment-id:790433084 --> @moorsey commented on GitHub (Mar 4, 2021): Thanks @jc21 Can't see any certs that say they have an error via the web page Ran the command you suggested, but get an error. Appears there is a folder "/etc/letsencrypt", but no .ini file inside, just futher folders, "accounts", "archive", "csr" etc ``` docker exec nginxproxymanager_app_1 /usr/bin/certbot renew --non-interactive --config "/etc/letsencrypt.ini" --preferred-challenges "dns,http" --disable-hook-validation usage: certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ... Certbot can obtain and install HTTPS/TLS/SSL certificates. By default, it will attempt to use a webserver both for obtaining and installing the certificate. certbot: error: File not found: /etc/letsencrypt.ini ```
Author
Owner

@typoworx-de commented on GitHub (Mar 8, 2021):

The manual should mention that a manual crontask is required. For me autorenewal did not work automatically running the docker-container.

<!-- gh-comment-id:792628119 --> @typoworx-de commented on GitHub (Mar 8, 2021): The manual should mention that a manual crontask is required. For me autorenewal did not work automatically running the docker-container.
Author
Owner

@markmonroy commented on GitHub (Aug 12, 2023):

Hope this helps anyone searching for the same issue.

What I discovered is that some old certs I had deleted from the web interface still resided on disk. NPM was still trying to renew them and throwing an error. As mentioned by @jc21 renewal errors can prevent the UI from updating.

I carefully deleted the zombie certs from:

/etc/letsencrypt/live/

and their corresponding .conf files from:

/etc/letsencrypt/renewal/

Restarted my container and the problem was resolved.

This raises another valid question: why doesn't deleting from the UI remove the cert from disk? But I don't plan to add/remove any certs in the near term so I'll save that rabbit hole for another day.

<!-- gh-comment-id:1675835259 --> @markmonroy commented on GitHub (Aug 12, 2023): Hope this helps anyone searching for the same issue. What I discovered is that some old certs I had deleted from the web interface still resided on disk. NPM was still trying to renew them and throwing an error. As mentioned by @jc21 renewal errors can prevent the UI from updating. I carefully deleted the zombie certs from: /etc/letsencrypt/live/ and their corresponding .conf files from: /etc/letsencrypt/renewal/ Restarted my container and the problem was resolved. This raises another valid question: why doesn't deleting from the UI remove the cert from disk? But I don't plan to add/remove any certs in the near term so I'll save that rabbit hole for another day.
Author
Owner

@boehser-enkel commented on GitHub (Nov 7, 2023):

/etc/letsencrypt/live/

Thank you. Same problem for me.
But how do you see which one is which?

I deleted any except the last 2 (the only ones i use now) but then nginx crashes and wants to load the other certs
nginx: [emerg] cannot load certificate "/etc/letsencrypt/live/npm-37/fullchain.pem": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/letsencrypt/live/npm-37/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)

<!-- gh-comment-id:1798194801 --> @boehser-enkel commented on GitHub (Nov 7, 2023): > /etc/letsencrypt/live/ Thank you. Same problem for me. But how do you see which one is which? I deleted any except the last 2 (the only ones i use now) but then nginx crashes and wants to load the other certs `nginx: [emerg] cannot load certificate "/etc/letsencrypt/live/npm-37/fullchain.pem": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/letsencrypt/live/npm-37/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)`
Author
Owner

@CacklingCapybara commented on GitHub (Jan 13, 2024):

Stumbled upon this while evaluating other reverse proxies. It does indeed seem like the issue with the certificate not showing as renewed in the GUI (despite it renewing successfully) is when some other renewal error occurs. I switched domains, but when deleting the certificate in the GUI it does not actually delete the cert on disk, as mentioned above. Here is an easy way to fix it:

This will list all certificates, even if deleted in NPM GUI. Make note of the certificate name
certbot certificates

Then delete the certificate. This option will give you a list of certificates to choose from. Simply choose the certificate that you want deleted, from the number you took a note of above
certbot delete
Confirm you chose the right certificate. Restart the container. Expiration date updated successfully in GUI.

<!-- gh-comment-id:1890583291 --> @CacklingCapybara commented on GitHub (Jan 13, 2024): Stumbled upon this while evaluating other reverse proxies. It does indeed seem like the issue with the certificate not showing as renewed in the GUI (despite it renewing successfully) is when some other renewal error occurs. I switched domains, but when deleting the certificate in the GUI it does not actually delete the cert on disk, as mentioned above. Here is an easy way to fix it: This will list all certificates, even if deleted in NPM GUI. Make note of the certificate name `certbot certificates` Then delete the certificate. This option will give you a list of certificates to choose from. Simply choose the certificate that you want deleted, from the number you took a note of above `certbot delete` Confirm you chose the right certificate. Restart the container. Expiration date updated successfully in GUI.
Author
Owner

@github-actions[bot] commented on GitHub (Aug 26, 2024):

Issue is now considered stale. If you want to keep it open, please comment 👍

<!-- gh-comment-id:2309152555 --> @github-actions[bot] commented on GitHub (Aug 26, 2024): Issue is now considered stale. If you want to keep it open, please comment :+1:
Author
Owner

@github-actions[bot] commented on GitHub (Sep 21, 2025):

Issue was closed due to inactivity.

<!-- gh-comment-id:3315439177 --> @github-actions[bot] commented on GitHub (Sep 21, 2025): Issue was closed due to inactivity.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/nginx-proxy-manager-NginxProxyManager#671
No description provided.