nginx-proxy-manager icon indicating copy to clipboard operation
nginx-proxy-manager copied to clipboard

AttributeError: module 'certbot.interfaces' has no attribute 'IAuthenticator'

Open naoki66 opened this issue 2 years ago • 17 comments

Checklist

  • Have you pulled and found the error with jc21/nginx-proxy-manager:latest docker image?
    • Yes
  • Are you sure you're not using someone else's docker image?
    • Yes
  • Have you searched for similar issues (both open and closed)?
    • Yes

Describe the bug

Error: Command failed: certbot certonly --config "/etc/letsencrypt.ini" --cert-name "npm-13" --agree-tos --email "[email protected]" --domains "*.AAA.com" --authenticator dns-aliyun --dns-aliyun-credentials "/etc/letsencrypt/credentials/credentials-13" An unexpected error occurred: AttributeError: module 'certbot.interfaces' has no attribute 'IAuthenticator' Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /tmp/certbot-log-i3b4nos8/log or re-run Certbot with -v for more details.

at ChildProcess.exithandler (node:child_process:402:12)
at ChildProcess.emit (node:events:513:28)
at maybeClose (node:internal/child_process:1100:16)
at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5)

Nginx Proxy Manager Version

v2.9.19

To Reproduce Steps to reproduce the behavior:

  1. Go to 'SSL Certificates. Add Let's Encrypt Certificate.Domain Names : *.AAA.COM.
  2. ADD Email Address for Let's Encrypt .
  3. OPEN USER A DNS CHALLENGE。
  4. change DNS Provider is Aliyun,

dns_aliyun_access_key = KKKKEEEYYY dns_aliyun_access_key_secret = secretsecretsecretsecret

  1. Click on save
  2. Scroll down to '....'
  3. See error

Expected behavior

Screenshots

Operating System

Additional context

naoki66 avatar Nov 25 '22 16:11 naoki66

This Works as Temporary Workaround for me.

Open the Container Shell docker exec -it nginxproxymanager_app_1 /bin/bash

apt update apt dist-upgrade apt install python3 python3-venv libaugeas0 python3 -m venv /opt/certbot/ /opt/certbot/bin/pip install --upgrade pip /opt/certbot/bin/pip install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0

Rynal avatar Nov 25 '22 20:11 Rynal

Error: Command failed: certbot certonly --config "/etc/letsencrypt.ini" --cert-name "npm-15" --agree-tos --email "MAIL" --domains "*.AAA.com" --authenticator dns-aliyun --dns-aliyun-credentials "/etc/letsencrypt/credentials/credentials-15" An unexpected error occurred: AttributeError: module 'certbot.interfaces' has no attribute 'IAuthenticator' Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /tmp/certbot-log-7ncs4i4z/log or re-run Certbot with -v for more details.

at ChildProcess.exithandler (node:child_process:402:12)
at ChildProcess.emit (node:events:513:28)
at maybeClose (node:internal/child_process:1100:16)
at Socket. (node:internal/child_process:458:11)
at Socket.emit (node:events:513:28)
at Pipe. (node:net:301:12)

[root@docker-nginx-proxy-manager:/app]# cat /tmp/certbot-log-7ncs4i4z/log
2022-11-26 10:32:24,165:DEBUG:certbot._internal.log:Exiting abnormally:
Traceback (most recent call last):
File "/usr/local/bin/certbot", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.7/dist-packages/certbot/main.py", line 19, in main
return internal_main.main(cli_args)
File "/usr/local/lib/python3.7/dist-packages/certbot/_internal/main.py", line 1707, in main
plugins = plugins_disco.PluginsRegistry.find_all()
File "/usr/local/lib/python3.7/dist-packages/certbot/_internal/plugins/disco.py", line 208, in find_all
cls._load_entry_point(entry_point, plugins)
File "/usr/local/lib/python3.7/dist-packages/certbot/_internal/plugins/disco.py", line 215, in _load_entry_p
oint
plugin_ep = PluginEntryPoint(entry_point)
File "/usr/local/lib/python3.7/dist-packages/certbot/_internal/plugins/disco.py", line 56, in init
self.plugin_cls: Type[interfaces.Plugin] = entry_point.load()
File "/usr/local/lib/python3.7/dist-packages/pkg_resources/init.py", line 2450, in load
return self.resolve()
File "/usr/local/lib/python3.7/dist-packages/pkg_resources/init.py", line 2456, in resolve
module = import(self.module_name, fromlist=['name'], level=0)
File "/usr/local/lib/python3.7/dist-packages/certbot_dns_aliyun/dns_aliyun.py", line 20, in
@zope.interface.implementer(interfaces.IAuthenticator)
AttributeError: module 'certbot.interfaces' has no attribute 'IAuthenticator'
2022-11-26 10:32:24,165:ERROR:certbot._internal.log:An unexpected error occurred:
2022-11-26 10:32:24,165:ERROR:certbot._internal.log:AttributeError: module 'certbot.interfaces' has no attribu
te 'IAuthenticator'

naoki66 avatar Nov 26 '22 10:11 naoki66

Having the same issue

Jonohas avatar Nov 26 '22 15:11 Jonohas

Me too

Cheety avatar Nov 26 '22 18:11 Cheety

Possibly related to https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2420 and/or https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2427 ?

spoit avatar Nov 27 '22 08:11 spoit

same issue. would reverting to a previous image help?

fiepfiep avatar Nov 27 '22 13:11 fiepfiep

This Works as Temporary Workaround for me.

Open the Container Shell docker exec -it nginxproxymanager_app_1 /bin/bash

apt update apt dist-upgrade apt install python3 python3-venv libaugeas0 python3 -m venv /opt/certbot/ /opt/certbot/bin/pip install --upgrade pip /opt/certbot/bin/pip install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0

This worked for me, but had to use command "pip3" instead of "/opt/certbot/bin/pip"

LTAdmin87 avatar Nov 28 '22 04:11 LTAdmin87

Same issue, with PowerDNS

saffronjam avatar Nov 28 '22 20:11 saffronjam

it seems updating the pip packages solves the issue. time for the devs to create a new image.

fiepfiep avatar Nov 28 '22 22:11 fiepfiep

This problem is caused by the wrong version of certbot, please go inside the docker container and execute the following command 👇

apt update
apt dist-upgrade
apt install python3 python3-venv libaugeas0
python3 -m venv /opt/certbot/
pip3 install --upgrade pip
pip3 install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0

Please take care to backup your data

skye-z avatar Nov 29 '22 02:11 skye-z

Can confirm that https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2430#issuecomment-1329981484 fixed it for me as well

edit: typo

spoit avatar Nov 29 '22 15:11 spoit

I can confirm that https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2430#issuecomment-1329981484 fixed it. But certain lines are not needed and can be confusing for others, so the updated one:

apt update; apt upgrade -y
apt install -y libaugeas0
pip3 install --upgrade pip
pip3 install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0

# Clean up cache [optional]
apt clean
pip3 cache purge

Note: I had to request the certifate twice from LetsEncrypt. My first trial gave an error (a different one), so you might need to try a few times until you get it.

Thanks @Rynal @skay-zhang

bkakilli avatar Nov 30 '22 06:11 bkakilli

Same issue for me. I had to go back to previous version (2.9.18)

Misterbabou avatar Dec 01 '22 13:12 Misterbabou

For me, https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2430#issuecomment-1329981484 works. But note, for example, I select Dynu DDNS on the web page, if no version is specified, it will automatically use certbot-dns-dynu==0.0.4 and update certbot==2.0.0, even if certbot==1.32.0 was set before, This is why some people still have no effect even after executing the above script So you need to manually install the previous version:

pip3 install certbot-dns-dynu==0.0.3 (it depends on certbot>=1.32.0)

The same for other plugins(cerbot-dns-xxx), you can go to pypi to check the historical version of certbot-dns-xxx, use "pip3 freeze" to view the current local certbot and plugin versions .

The script below works for me(docker image: jc21/nginx-proxy-manager:2.9.19)

apt update
apt upgrade -y
apt install -y libaugeas0
pip3 install --upgrade pip
pip3 install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0
pip3 install certbot-dns-dynu==0.0.3

boertianxia avatar Dec 02 '22 10:12 boertianxia

came here because of:

✖  error     Error: Command failed: certbot renew --non-interactive --quiet --config "/etc/letsencrypt.ini" --preferred-challenges "dns,http" --disable-hook-validation
An unexpected error occurred:
ModuleNotFoundError: No module named 'zope'

    at ChildProcess.exithandler (node:child_process:402:12)
    at ChildProcess.emit (node:events:513:28)
    at maybeClose (node:internal/child_process:1100:16)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5)

Temporary fix with previous versions would be

pip3 install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0 certbot-dns-ionos==2022.5.15

axza avatar Dec 02 '22 14:12 axza

This Works as Temporary Workaround for me.

Open the Container Shell docker exec -it nginxproxymanager_app_1 /bin/bash

apt update apt dist-upgrade apt install python3 python3-venv libaugeas0 python3 -m venv /opt/certbot/ /opt/certbot/bin/pip install --upgrade pip /opt/certbot/bin/pip install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0

Thanks for temp fix :)

lucidnx avatar Dec 06 '22 23:12 lucidnx

Thank you! This also seems to fix the issue with "test server reachability" feature on the SSL page, too.

LanceMcCarthy avatar Dec 25 '22 18:12 LanceMcCarthy

This is it. It's what finally worked for me. DNS provider for GoDaddy was leading to the failure, but only because it bumped the version of certbot above 2.

I mixed a few approaches from above, but the key for me was pinning all the important certbot packages down to 1.32 while installing the DNS provider package with the following:

apt update && apt upgrade -y && apt install -y libaugeas0
pip3 install --upgrade pip
pip3 install certbot==1.32.0 certbot-nginx==1.32.0 acme==1.32.0 certbot-dns-godaddy

a3gill avatar Aug 23 '23 17:08 a3gill

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

github-actions[bot] avatar Apr 22 '24 01:04 github-actions[bot]