fix(certbot): switch the Azure DNS plugin to certbot-dns-azure-modern - #5831
fix(certbot): switch the Azure DNS plugin to certbot-dns-azure-modern#5831cloudchristoph wants to merge 2 commits into
Conversation
certbot-dns-azure 2.6.1 requires certbot<4.0; installing it into the image's certbot 5.x venv downgrades certbot and acme to 3.3.0, and acme 3.3.0 no longer imports against pyOpenSSL 26 (NginxProxyManager#5606). The maintained fork certbot-dns-azure-modern keeps module, entry point, flags and credentials format, requires certbot>=3.0 without an upper bound and declares its own azure-mgmt-dns range, so the extra dependency pin is no longer needed.
There was a problem hiding this comment.
🟢 Approval recommended
The change is a minimal, well-scoped plugin metadata update consistent with existing plugin entries (including empty dependencies) and addresses the documented certbot/acme downgrade failure mode.
Pull request overview
This PR updates Nginx Proxy Manager’s certbot DNS plugin catalog to use a maintained Azure DNS plugin that remains compatible with the certbot version shipped in the current container image, avoiding pip-driven downgrades that can break certbot/acme imports.
Changes:
- Switch Azure DNS plugin package from
certbot-dns-azuretocertbot-dns-azure-modern. - Update the Azure plugin version constraint to
~=2.8.0. - Remove the explicit
azure-mgmt-dns==8.2.0dependency pin (plugin now provides its own dependency requirements).
File summaries
| File | Description |
|---|---|
| backend/certbot/dns-plugins.json | Updates the Azure DNS plugin package/version and removes the explicit SDK dependency pin to keep certbot compatible. |
Review details
- Files reviewed: 1/1 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
The template was the longest of all plugins (1181 characters, nine comment lines) and carried the upstream example secret that trips secret scanning. It now shows what a user has to fill in: the service principal, and one zone line in the format ZONE_NAME:RESOURCE_GROUP_ID, plus a link to the docs for everything else.
|
Docker Image for build 2 is available on DockerHub: Note Ensure you backup your NPM instance before testing this image! Especially if there are database changes. Warning Changes and additions to DNS Providers require verification by at least 2 members of the community! |
Why
certbot-dns-azureis pinned to~=2.6.1, and 2.6.1 (the latest upstream release, December 2024) requirescertbot<4.0. Against the certbot 5.6.0 in the current image, installing it makes pip downgrade certbot and acme, after which certbot cannot import at all:acme 3.3.0 still uses
OpenSSL.crypto.X509Extension, which pyOpenSSL 26 removed, so every certificate operation in the container fails, not only the Azure ones. This is #5606; theazurerow in the pin audit there (#5606 (comment)) lists it as one of the three plugins without a compatible upstream release.Upstream has no compatible release and has not responded to the fix (terricain/certbot-dns-azure#65, open since February 2026). This PR switches the entry to the maintained fork
certbot-dns-azure-modern2.8.0 (source: https://github.com/cloudchristoph/certbot-dns-azure-modern), which requirescertbot>=3.0with no upper bound. Modulecertbot_dns_azure, entry pointdns-azure, flags and the credentials file format are identical, sofull_plugin_nameand thecredentialstemplate stay as they are and existing credentials and renewal configs keep working.dependenciesbecomes empty: the fork declaresazure-mgmt-dns>=8.2.0itself and works with both the 8.x and the 9.x line (9.x changed theDnsManagementClientconstructor, which is why the old entry pinned 8.2.0 here).Verified in
jc21/nginx-proxy-manager:2.15.1and:latest(both certbot 5.6.0):Also verified on a running NPM 2.15.1 instance with this exact
dns-plugins.jsonentry: NPM installed the plugin at startup and renewed a wildcard certificate via Azure DNS with certbot 5.6.0, clean log. The same instance did the same renewal earlier with 2.7.0 of the fork, which still resolved azure-mgmt-dns 8.2.0, so both SDK lines have a real issuance behind them.Second commit: the
credentialstemplate is shortened. It was the longest of all 87 entries (1181 characters, nine comment lines, two typos) and carried the upstream example secret that trips GitHub secret scanning. It now shows what a user has to fill in, the service principal and one zone line in the formatZONE_NAME:RESOURCE_GROUP_ID, plus a link to the docs for everything else. The keys are unchanged.Fixes #5606 for the
azureplugin.Type of Change
AI Usage