diff --git a/acme/setup.py b/acme/setup.py index b05b9f6bd..ac63492d4 100644 --- a/acme/setup.py +++ b/acme/setup.py @@ -1,6 +1,6 @@ from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' setup( version=version, diff --git a/certbot-apache/setup.py b/certbot-apache/setup.py index 7986a5b20..8bdb9c824 100644 --- a/certbot-apache/setup.py +++ b/certbot-apache/setup.py @@ -1,6 +1,6 @@ from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ # We specify the minimum acme and certbot version as the current plugin diff --git a/certbot-ci/setup.py b/certbot-ci/setup.py index b05b9f6bd..ac63492d4 100644 --- a/certbot-ci/setup.py +++ b/certbot-ci/setup.py @@ -1,6 +1,6 @@ from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' setup( version=version, diff --git a/certbot-compatibility-test/setup.py b/certbot-compatibility-test/setup.py index b05b9f6bd..ac63492d4 100644 --- a/certbot-compatibility-test/setup.py +++ b/certbot-compatibility-test/setup.py @@ -1,6 +1,6 @@ from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' setup( version=version, diff --git a/certbot-dns-cloudflare/setup.py b/certbot-dns-cloudflare/setup.py index 6d0c0534d..4146cb9c8 100644 --- a/certbot-dns-cloudflare/setup.py +++ b/certbot-dns-cloudflare/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ # for now, do not upgrade to cloudflare>=2.20 to avoid deprecation warnings and the breaking diff --git a/certbot-dns-digitalocean/setup.py b/certbot-dns-digitalocean/setup.py index 26dd5a0c2..3d766d1ac 100644 --- a/certbot-dns-digitalocean/setup.py +++ b/certbot-dns-digitalocean/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ 'python-digitalocean>=1.15.0', # 1.15.0 or newer is recommended for TTL support diff --git a/certbot-dns-dnsimple/setup.py b/certbot-dns-dnsimple/setup.py index 05ea550a7..0384ec46c 100644 --- a/certbot-dns-dnsimple/setup.py +++ b/certbot-dns-dnsimple/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ # This version of lexicon is required to address the problem described in diff --git a/certbot-dns-dnsmadeeasy/setup.py b/certbot-dns-dnsmadeeasy/setup.py index 0e82ad04b..8a14c5396 100644 --- a/certbot-dns-dnsmadeeasy/setup.py +++ b/certbot-dns-dnsmadeeasy/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ 'dns-lexicon>=3.14.1', diff --git a/certbot-dns-gehirn/setup.py b/certbot-dns-gehirn/setup.py index 0e82ad04b..8a14c5396 100644 --- a/certbot-dns-gehirn/setup.py +++ b/certbot-dns-gehirn/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ 'dns-lexicon>=3.14.1', diff --git a/certbot-dns-google/setup.py b/certbot-dns-google/setup.py index 9930e2433..21e7ae3ca 100644 --- a/certbot-dns-google/setup.py +++ b/certbot-dns-google/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ 'google-api-python-client>=1.6.5', diff --git a/certbot-dns-linode/setup.py b/certbot-dns-linode/setup.py index 0e82ad04b..8a14c5396 100644 --- a/certbot-dns-linode/setup.py +++ b/certbot-dns-linode/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ 'dns-lexicon>=3.14.1', diff --git a/certbot-dns-luadns/setup.py b/certbot-dns-luadns/setup.py index 0e82ad04b..8a14c5396 100644 --- a/certbot-dns-luadns/setup.py +++ b/certbot-dns-luadns/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ 'dns-lexicon>=3.14.1', diff --git a/certbot-dns-nsone/setup.py b/certbot-dns-nsone/setup.py index 0e82ad04b..8a14c5396 100644 --- a/certbot-dns-nsone/setup.py +++ b/certbot-dns-nsone/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ 'dns-lexicon>=3.14.1', diff --git a/certbot-dns-ovh/setup.py b/certbot-dns-ovh/setup.py index 045cc2c8d..6c8a4ed0e 100644 --- a/certbot-dns-ovh/setup.py +++ b/certbot-dns-ovh/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ 'dns-lexicon>=3.15.1', diff --git a/certbot-dns-rfc2136/setup.py b/certbot-dns-rfc2136/setup.py index adfe40e35..a03008a76 100644 --- a/certbot-dns-rfc2136/setup.py +++ b/certbot-dns-rfc2136/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ # This version was chosen because it is the version packaged in RHEL 9 and Debian unstable. It diff --git a/certbot-dns-route53/setup.py b/certbot-dns-route53/setup.py index fcc476060..8383e4f8e 100644 --- a/certbot-dns-route53/setup.py +++ b/certbot-dns-route53/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ 'boto3>=1.20.34', diff --git a/certbot-dns-sakuracloud/setup.py b/certbot-dns-sakuracloud/setup.py index 0e82ad04b..8a14c5396 100644 --- a/certbot-dns-sakuracloud/setup.py +++ b/certbot-dns-sakuracloud/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ 'dns-lexicon>=3.14.1', diff --git a/certbot-nginx/setup.py b/certbot-nginx/setup.py index d9eab19a0..74d7822cd 100644 --- a/certbot-nginx/setup.py +++ b/certbot-nginx/setup.py @@ -1,6 +1,6 @@ from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' install_requires = [ # We specify the minimum acme and certbot version as the current plugin diff --git a/certbot/CHANGELOG.md b/certbot/CHANGELOG.md index eebd950f2..fa5b409be 100644 --- a/certbot/CHANGELOG.md +++ b/certbot/CHANGELOG.md @@ -4,6 +4,17 @@ Certbot adheres to [Semantic Versioning](https://semver.org/). +## 5.4.0 - 2026-03-10 + +### Added + +- The webroot plugin now supports IP address issuance. ([#10543](https://github.com/certbot/certbot/issues/10543)) + +### Changed + +- certbot-nginx now requires pyparsing>=3.0.0. ([#10560](https://github.com/certbot/certbot/issues/10560)) + + ## 5.3.1 - 2026-02-09 ### Fixed diff --git a/certbot/docs/cli-help.txt b/certbot/docs/cli-help.txt index a606f1b23..d5a7387fd 100644 --- a/certbot/docs/cli-help.txt +++ b/certbot/docs/cli-help.txt @@ -147,7 +147,7 @@ options: case, and to know when to deprecate support for past Python versions and flags. If you wish to hide this information from the Let's Encrypt server, set this to - "". (default: CertbotACMEClient/5.3.1 (certbot; + "". (default: CertbotACMEClient/5.4.0 (certbot; OS_NAME OS_VERSION) Authenticator/XXX Installer/YYY (SUBCOMMAND; flags: FLAGS) Py/major.minor.patchlevel). The flags encoded in the user agent are: --duplicate, @@ -759,18 +759,18 @@ webroot: --webroot-path WEBROOT_PATH, -w WEBROOT_PATH public_html / webroot path. This can be specified - multiple times to handle different domains; each - domain will have the webroot path that preceded it. - For instance: `-w /var/www/example -d example.com -d - www.example.com -w /var/www/thing -d thing.net -d + multiple times to handle different identifiers; each + identifier will have the webroot path that preceded + it. For instance: `-w /var/www/example -d example.com + -d www.example.com -w /var/www/thing -d thing.net -d m.thing.net` (default: Ask) --webroot-map WEBROOT_MAP - JSON dictionary mapping domains to webroot paths; this - implies -d for each entry. You may need to escape this - from your shell. E.g.: --webroot-map - '{"eg1.is,m.eg1.is":"/www/eg1/", "eg2.is":"/www/eg2"}' - This option is merged with, but takes precedence over, - -w / -d entries. At present, if you put webroot-map in - a config file, it needs to be on a single line, like: - webroot-map = {"example.com":"/var/www"}. (default: - {}) + JSON dictionary mapping identifiers to webroot paths; + this implies -d or --ip-address for each entry. You + may need to escape this from your shell. E.g.: + --webroot-map '{"eg1.is,m.eg1.is":"/www/eg1/", + "eg2.is":"/www/eg2"}' This option is merged with, but + takes precedence over, -w / -d entries. At present, if + you put webroot-map in a config file, it needs to be + on a single line, like: webroot-map = + {"example.com":"/var/www"}. (default: {}) diff --git a/certbot/src/certbot/__init__.py b/certbot/src/certbot/__init__.py index 973f39cd5..8d27b69d8 100644 --- a/certbot/src/certbot/__init__.py +++ b/certbot/src/certbot/__init__.py @@ -1,4 +1,4 @@ """Certbot client.""" # version number like 1.2.3a0, must have at least 2 parts, like 1.2 -__version__ = '5.4.0.dev0' +__version__ = '5.5.0.dev0' diff --git a/letstest/setup.py b/letstest/setup.py index b05b9f6bd..ac63492d4 100644 --- a/letstest/setup.py +++ b/letstest/setup.py @@ -1,6 +1,6 @@ from setuptools import setup -version = '5.4.0.dev0' +version = '5.5.0.dev0' setup( version=version, diff --git a/newsfragments/10543.added b/newsfragments/10543.added deleted file mode 100644 index 65a37d512..000000000 --- a/newsfragments/10543.added +++ /dev/null @@ -1 +0,0 @@ -The webroot plugin now supports IP address issuance. diff --git a/newsfragments/10560.changed b/newsfragments/10560.changed deleted file mode 100644 index e61b2e3a5..000000000 --- a/newsfragments/10560.changed +++ /dev/null @@ -1 +0,0 @@ -certbot-nginx now requires pyparsing>=3.0.0.