NginxProxyManager / nginx-proxy-manager

Docker container for managing Nginx proxy hosts with a simple, powerful interface
https://nginxproxymanager.com
MIT License
22.45k stars 2.6k forks source link

Cannot import 'ClientBase' from 'acme.client' when trying to renew cert(s) #3245

Open phillipmcmahon opened 1 year ago

phillipmcmahon commented 1 year ago

Checklist

Describe the bug When trying to renew existing certs after updating to 2.10.4 get an internal error. Logs show the following

[10/7/2023] [10:53:22 AM] [SSL ] › ℹ info Renewing Let'sEncrypt certificates via ClouDNS for Cert #17: *.phillipmcmahon.com, phillipmcmahon.com [10/7/2023] [10:53:22 AM] [SSL ] › ℹ info Command: certbot renew --config "/etc/letsencrypt.ini" --work-dir "/tmp/letsencrypt-lib" --logs-dir "/tmp/letsencrypt-log" --cert-name "npm-17" --disable-hook-validation --no-random-sleep-on-renew [10/7/2023] [10:53:22 AM] [Express ] › ⚠ warning Command failed: certbot renew --config "/etc/letsencrypt.ini" --work-dir "/tmp/letsencrypt-lib" --logs-dir "/tmp/letsencrypt-log" --cert-name "npm-17" --disable-hook-validation --no-random-sleep-on-renew Traceback (most recent call last): File "/usr/bin/certbot", line 5, in from certbot.main import main File "/opt/certbot/lib/python3.7/site-packages/certbot/main.py", line 6, in from certbot._internal import main as internal_main File "/opt/certbot/lib/python3.7/site-packages/certbot/_internal/main.py", line 28, in from certbot import crypto_util File "/opt/certbot/lib/python3.7/site-packages/certbot/crypto_util.py", line 42, in from certbot import interfaces File "/opt/certbot/lib/python3.7/site-packages/certbot/interfaces.py", line 21, in from acme.client import ClientBase ImportError: cannot import name 'ClientBase' from 'acme.client' (/opt/certbot/lib/python3.7/site-packages/acme/client.py)

Nginx Proxy Manager Version 2.10.4

To Reproduce Steps to reproduce the behavior:

  1. Go to SSL Certificates
  2. Click on 'Renew Now' for the certificate in question
  3. 'Internal Error' in UI

Expected behavior Certificate renews as expected

Screenshots

image

Operating System via Docker

Additional context N/A

decole commented 1 year ago

I have this bug too.

NetRat88 commented 11 months ago

Also same bug for me. Found out on reddit a possible workaroung. Replace acme==1.32.0 seems to make it work on Godaddy DNS but don'nt know exactly where and how and how I can made this change persistant?! Any idea?

ghost commented 11 months ago

I also have this issue. I'm also using ClouDNS with NginxProxyManager in a docker container on my unraid

mfslena commented 11 months ago

Anyone found a solution? I'm having the same problem.

Syirrus commented 11 months ago

I have this same error. Is there a solution for the issue?

ismxilxrif commented 10 months ago

for those using the direct setup, not docker, this might work

i don't know what's the issue, i created a new virtual environment inside my home directory (non-root), and link /usr/bin/certbot to that new venv, and the problem's solved, note bcs of wildcard issue, i used certbot-dns-godaddy==2.6.0

it's just my 2 cents, but it might help some folks out there, good luck!

this works for godaddy, so it might work or break other dns plugins, so be careful from here, haven't tested other plugins but it should work, plugins that are directly supported by certbot eg. cloudflare, shouldn't be an isssue, it's just that 3rd party plugins are having these problems i assume

here we go.

as non root, execute:

python -m venv <new-env-name>

cd <some-name>/bin

./pip install certbot-dns-godaddy==2.6.0

sudo ln -sf /home/<your-home-directory>/<new-env-name>/bin/certbot /usr/bin/certbot

then re run the cert process again

SNR-Tech-Bytes commented 10 months ago

for those of you in docker I seem to have fixed this using some information I found on reddit Note I'm using godaddy DNS challenge

run the following

docker compose ps

which will will spit out your list of dockers, whatever your nginx proxy manager is named put that in the following command

docker exec [your_docker_name_no_Braces] /bin/sh -c "/opt/certbot/bin/pip install acme==1.32.0"

Ragziesoft commented 9 months ago

for those of you in docker I seem to have fixed this using some information I found on reddit Note I'm using godaddy DNS challenge

run the following

docker compose ps

which will will spit out your list of dockers, whatever your nginx proxy manager is named put that in the following command

docker exec [your_docker_name_no_Braces] /bin/sh -c "/opt/certbot/bin/pip install acme==1.32.0"

I have a Godaddy registered domain. I am hosting a webpage of this domain on my home Raspberry pi using nginx proxy manager. While getting ssl with letsencrypt i get an "internal error". For the same setup when i tried with duckdns.org i successfully got the ssl certificates. So to resolve this i tried the above mentioned solution. First i got an error I get this message "/bin/sh: /opt/certbot/bin/pip: not found". Then i checked pip, i get message python3-pip is installed and is latest version. Then i retry this command docker exec 3d7e9aa4aaaa pip install acme==1.32.0 . the command is executed successfully. (nginx container id) Then i try to reinstall ssl from letsencrypt for godaddy registered domain.

but i am still getting internal error even though the acme was changed to 1.32.0

github-actions[bot] commented 2 months ago

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