Commit Graph
11385 Commits
Author SHA1 Message Date
Will Greenberg 998f72443c use updated plugins paths 2026-03-17 17:58:53 -07:00
Will Greenberg 2f647637b0 mv apache and nginx into _internal/plugins 2026-03-17 17:58:53 -07:00
Will Greenberg 3363907385 fix isolated-apache/nginx tests
it's a bit ugly, but by isolating just the paths of their internal
modules, this effectively replicates us testing the old plugins
2026-03-17 17:58:53 -07:00
Will Greenberg 169dd120fa fix isolated-certbot tests
my interpretation of this testenv is to make sure certbot works even
without any plugins (and the extra dependencies those imply)
2026-03-17 17:58:53 -07:00
Will Greenberg 72d6b0d9b4 fix certbot-apache paths 2026-03-17 17:58:53 -07:00
Will Greenberg f8d1d5a13c fix typo 2026-03-17 17:58:53 -07:00
Will Greenberg 567711271b move certbot optional-dependencies to setup.py
this lets us ensure that `certbot[nginx]` and `certbot[apache]` pull the
right versions of their respective shims
2026-03-17 17:58:53 -07:00
Will Greenberg cbf5a46ce5 fix typos, lints 2026-03-17 17:58:52 -07:00
Will Greenberg 4a428ebda4 Add entrypoints for nginx/apache shims 2026-03-17 17:58:52 -07:00
Will Greenberg 6b62311909 Migrate MANIFEST.in entries
I'm actually unclear on whether this is correct. Should we
unconditionally be including these "extra" files in the source
distribution?
2026-03-17 17:58:52 -07:00
Will Greenberg 593f5ae044 Fix more certbot_apache/certbot_nginx paths 2026-03-17 17:58:52 -07:00
Will Greenberg 3e05ce27b2 Mass rename of certbot_nginx paths 2026-03-17 17:58:52 -07:00
Will Greenberg 1126ba0e88 Mass rename of certbot_apache paths 2026-03-17 17:58:52 -07:00
Will Greenberg 7123b6af13 Use certbot extra deps for apache/nginx shims 2026-03-17 17:58:52 -07:00
Will Greenberg a06841c9c9 Move certbot-nginx into certbot 2026-03-17 17:58:52 -07:00
Will Greenberg 6d7faee191 Move certbot-apache into certbot 2026-03-17 17:58:52 -07:00
Will Greenberg f27c9e14c9 Add nginx and apache extras w/ their dependencies 2026-03-17 17:58:52 -07:00
James MossandGitHub 26a0b0295b Logo & Wording for DigitalOcean Open Source Sponsorship in Readme.rst (#10601)
In exchange for participating in Open Source Sponsorship, DigitalOcean
has assembled a guide. This commit should bring the readme in line with
the provided guide.

https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/index.html
2026-03-17 13:33:36 -07:00
Brad WarrenandGitHub e9f3c986a2 update manual docs for IP certs (#10596)
i noticed this when reviewing jsha's upcoming blog post

this probably should have been done as part of
https://github.com/certbot/certbot/pull/10544, but we forgot to do it
then

i don't think this PR requires two reviews
2026-03-11 12:51:40 -07:00
ohemorangeandGitHub fa0b0b1057 Merge pull request #10594 from certbot/candidate-5.4.0
Candidate 5.4.0
2026-03-10 12:15:27 -07:00
Will Greenberg 8ebbe24190 Bump version to 5.5.0 2026-03-10 10:47:29 -07:00
Will Greenberg 1ff7e2032a Remove built packages from git 2026-03-10 10:47:29 -07:00
Will Greenberg 95c004cb96 Release 5.4.0 v5.4.0 2026-03-10 10:47:28 -07:00
Will Greenberg 564a7b70d6 Update changelog for 5.4.0 release 2026-03-10 10:46:56 -07:00
ohemorangeandGitHub c31974128b Add thanks section to readme; thank digital ocean (#10592)
Fixes https://github.com/certbot/certbot/issues/10580

Direct link to preview of updated README:
https://github.com/certbot/certbot/blob/47786891acc4cb5031d5934de76399620c08a013/certbot/README.rst#thanks
2026-03-06 17:58:31 -08:00
ohemorangeandGitHub e6efb5c6d3 Add notice about AI generated code policy to pull request checklist (#10590) 2026-03-05 11:02:22 -08:00
ohemorangeandGitHub 15e73753a6 Fix link in docker readme (#10582)
The link in the docker README is no longer accurate, we've changed the
headings on the website. This updates the README to match.
2026-02-25 21:17:09 -08:00
ff281d48a8 Improve the error message when certbot renew is used with the -d option (#10225)
Co-authored-by: Brad Warren <bmw@eff.org>
2026-02-13 23:55:35 +00:00
ohemorangeandGitHub 4c61a450d4 Reset mock call count using reset_mock since new thread-safe implementation means it can no longer just be set to 0 (#10576)
This should fix our failing tests.

Python 3.14.3 has the following in its changelog:

> [gh-142651](https://github.com/python/cpython/issues/142651):
[unittest.mock](https://docs.python.org/3/library/unittest.mock.html#module-unittest.mock):
fix a thread safety issue where
[Mock.call_count](https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.call_count)
may return inaccurate values when the mock is called concurrently from
multiple threads.

As a result, we have to call `reset_mock()` instead of using
`.call_count = 0`. See example
[here](https://github.com/matplotlib/matplotlib/pull/31153).

Tests on my machine showing that this change fixes things, and it's the
only place to fix:
```bash
$ brew upgrade pyenv
$ pyenv install 3.14.3
$ pyenv global 3.14.3
$ tools/venv.py
$ source venv/bin/activate
$ pytest certbot -k "test_rollback_too_many" 
====================================================================== test session starts =======================================================================
platform darwin -- Python 3.14.3, pytest-9.0.2, pluggy-1.6.0
rootdir: /Users/erica/certbot
configfile: pytest.ini
plugins: anyio-4.12.1, xdist-3.8.0, cov-7.0.0
collected 1039 items / 1038 deselected / 1 selected                                                                                                              

certbot/src/certbot/_internal/tests/reverter_test.py .                                                                                                     [100%]

=============================================================== 1 passed, 1038 deselected in 2.94s ===============================================================
$ git grep 'call_count = 0'
$ git checkout main
$ pytest certbot -k "test_rollback_too_many"
====================================================================== test session starts =======================================================================
platform darwin -- Python 3.14.3, pytest-9.0.2, pluggy-1.6.0
rootdir: /Users/erica/certbot
configfile: pytest.ini
plugins: anyio-4.12.1, xdist-3.8.0, cov-7.0.0
collected 1039 items / 1038 deselected / 1 selected                                                                                                              

certbot/src/certbot/_internal/tests/reverter_test.py F                                                                                                     [100%]

============================================================================ FAILURES ============================================================================
_______________________________________________________ TestFullCheckpointsReverter.test_rollback_too_many _______________________________________________________

self = <certbot._internal.tests.reverter_test.TestFullCheckpointsReverter testMethod=test_rollback_too_many>
mock_logger = <MagicMock name='logger' id='4463351456'>

>   ???
E   AssertionError: assert 2 == 1
E    +  where 2 = <MagicMock name='logger.warning' id='4463351792'>.call_count
E    +    where <MagicMock name='logger.warning' id='4463351792'> = <MagicMock name='logger' id='4463351456'>.warning

certbot/src/certbot/_internal/tests/reverter_test.py:363: AssertionError
==================================================================== short test summary info =====================================================================
FAILED certbot/src/certbot/_internal/tests/reverter_test.py::TestFullCheckpointsReverter::test_rollback_too_many - AssertionError: assert 2 == 1
=============================================================== 1 failed, 1038 deselected in 0.48s ===============================================================
$ git grep 'call_count = 0'
certbot/src/certbot/_internal/tests/reverter_test.py:        mock_logger.warning.call_count = 0
```
2026-02-13 13:08:06 -08:00
Jacob Hoffman-AndrewsandGitHub 59a631f21a webroot: add IP address support (#10543)
Part of #10346
2026-02-12 11:00:03 -08:00
Brad WarrenandGitHub 8ae17fd174 update dns-azure URL (#10573)
until sometime in the last year,
https://github.com/binkhq/certbot-dns-azure redirected to
https://github.com/terricain/certbot-dns-azure according to
https://web.archive.org/web/20250901000000*/https://github.com/binkhq/certbot-dns-azure.
since then, that redirect was broken/removed

this has [caused
confusion](https://github.com/certbot/certbot/pull/8727#issuecomment-3880163261)
and since [terricain expressed interest in their plugin being
listed](https://github.com/certbot/certbot/pull/8727#issuecomment-815287041),
let's fix up that link
2026-02-10 14:06:19 -08:00
ohemorangeandGitHub d4681f9a49 Merge pull request #10571 from certbot/candidate-5.3.1
update files from 5.3.1 release
2026-02-10 11:39:30 -08:00
Brad WarrenandGitHub e710fb0488 update credential expiry (#10570)
i just updated this credential in CI and created a calendar event to
help us remember to update it

with the calendar event, i don't think we need the code comment here. it
wasn't updated last time and it's one less thing for us to remember to
do next year

i don't think this PR requires two reviews

with the changes i made to CI and our calendar, i think i can say this
fixes #10563
2026-02-09 16:24:52 -08:00
Brad Warren 29de02c160 Bump version to 5.4.0 2026-02-09 13:20:07 -08:00
Brad Warren 619a519650 Remove built packages from git 2026-02-09 13:20:07 -08:00
Brad Warren ec978d593d Release 5.3.1 v5.3.1 2026-02-09 13:20:05 -08:00
Brad Warren 3c61eadc8b Update changelog for 5.3.1 release 2026-02-09 13:19:25 -08:00
Brad WarrenandGitHub b02f88af21 add changelog entry for point release (#10569) 2026-02-09 13:16:50 -08:00
CharlieandGitHub 420f526062 Fix Cloudflare API tokens link in documentation (#10551) (#10564)
Updated the link to the Cloudflare API tokens page for accuracy.

## Pull Request Checklist

- [ ] The Certbot team has recently expressed interest in reviewing a PR
for this. If not, this PR may be closed due our limited resources and
need to prioritize how we spend them.
- [ ] If the change being made is to a [distributed
component](https://certbot.eff.org/docs/contributing.html#code-components-and-layout),
add a description of your change to the `newsfragments` directory. This
should be a file called `<title>.<type>`, where `<title>` is either a
GitHub issue number or some other unique name starting with `+`, and
`<type>` is either `changed`, `fixed`, or `added`.
* For example, if you fixed a bug for issue number 42, create a file
called `42.fixed` and put a description of your change in that file.
- [ ] Add or update any documentation as needed to support the changes
in this PR.
- [x] Include your name in `AUTHORS.md` if you like.

## Pull Request Checklist

- [ ] The Certbot team has recently expressed interest in reviewing a PR
for this. If not, this PR may be closed due our limited resources and
need to prioritize how we spend them.
- [ ] If the change being made is to a [distributed
component](https://certbot.eff.org/docs/contributing.html#code-components-and-layout),
add a description of your change to the `newsfragments` directory. This
should be a file called `<title>.<type>`, where `<title>` is either a
GitHub issue number or some other unique name starting with `+`, and
`<type>` is either `changed`, `fixed`, or `added`.
* For example, if you fixed a bug for issue number 42, create a file
called `42.fixed` and put a description of your change in that file.
- [ ] Add or update any documentation as needed to support the changes
in this PR.
- [ ] Include your name in `AUTHORS.md` if you like.
2026-02-05 11:52:08 -08:00
ohemorangeandGitHub 9ba139a9ef Fix links to --ip-address PRs in changelog (#10562)
As noted in
https://community.letsencrypt.org/t/certbot-5-3-0-release/245097/2, we
have the wrong link here (and it's missing the manual pr link). Let's
just add those in.
2026-02-03 13:30:58 -08:00
Brad WarrenandGitHub 410ee87242 fix compatibility with pyparsing 3 and update to it (#10560)
on main if you run tools/pinning/current/repin.sh and run our unit
tests, they will fail due to new deprecation warnings from pyparsing.
the cause of these warnings is described at
https://github.com/pyparsing/pyparsing/blob/dc009668d8025b96522eb7503e2ef84c2be58843/docs/whats_new_in_3_0_0.rst?plain=1#L613-L708

this PR fixes these warnings and updates our minimum required pyparsing
version to 3.0 where the new naming convention is available. i ran our
full test suite on the first commit here and it passed

i don't think it's worth trying to keep compatibility with pyparsing<3
unless we get a request for us to do so which i really doubt we will
2026-02-03 11:51:26 -08:00
Brad WarrenandGitHub a9746336b7 Merge pull request #10561 from certbot/candidate-5.3.0
Release 5.3.0
2026-02-03 11:49:39 -08:00
Erica Portnoy 4de1c60534 Remove built packages from git 2026-02-03 09:52:18 -08:00
Erica Portnoy 1ee73eed10 Bump version to 5.4.0 2026-02-03 09:52:18 -08:00
Erica Portnoy 54a3078305 Release 5.3.0 v5.3.0 2026-02-03 09:52:16 -08:00
Erica Portnoy 6b8bb6c0a3 Update changelog for 5.3.0 release 2026-02-03 09:51:43 -08:00
e7c539d3e9 Deprecate functions using acme.crypto_util.Formatto be able to soon remove OpenSSL (#10485)
A few largely unused functions/types have been deprecated in our effort
to remove our pyOpenSSL dependency:
    * Deprecated: `certbot.crypto_util.get_sans_from_cert`
    * Deprecated: `certbot.crypto_util.get_names_from_cert`
    * Deprecated: `certbot.crypto_util.get_names_from_req`
* Deprecated: `certbot.crypto_util.import_csr_file` (and replaced by
`certbot.crypto_util.read_csr_file`)
    * Deprecated: `acme.crypto_util.Format`

`read_csr_file` now always returns a PEM formatted CSR, since that's
what was happening in practice, and therefore lets us stop having to
return a `Format`, so we will be able to stop importing it.

first half of #10433

---------

Co-authored-by: Brad Warren <bmw@users.noreply.github.com>
2026-02-02 16:25:13 -08:00
5cc2f6b4af List certbot-dns-czechia under 3rd party plugins (#10557)
Fixes https://github.com/certbot/certbot/issues/10553

Link checked as well.

---------

Co-authored-by: Brad Warren <bmw@eff.org>
2026-02-02 23:34:40 +00:00
ohemorangeandGitHub b362109bf6 Fix certbot tests after updating pytest to 9.0.2 (#10545)
Fixes  #10518.

`tools/pinning/current/repin.sh` is not run; only pytest version is
updated. This is because `pypinning` had a bunch of syntax changes that
seem simply but I believe should be in a separate PR, which I think
should be done after this to collect all repin changes.

As discussed further in #10518, these issues were caused by pytest's
internalization of pytest-subtest, which had several implementation
changes.

To fix these, we simply no longer use subtest in the failing tests. The
test in acme is now parametrized instead, and the tests in apache only
ever had a single parameter.

To use parametrization in the acme test, I converted `DNSTest` from
unittest to pytest style, which was pretty straightforward. The only
note there is that while it would be nice to make `ec_secp384r1_key` a
fixture, you [can't use fixtures in
parameters](https://github.com/pytest-dev/pytest/issues/349). You could
use requests, but that seemed less clear and messier, because then you'd
be checking the value of the parameter and only sometimes loading it.
Could also make it a global variable, but that didn't really seem
necessary, as it's only called twice. Happy to consider other options,
not strongly tied to this one, just seemed nicest to me.
2026-02-02 12:13:24 -08:00
Mike LimandGitHub 88af129315 Granular permissions (#9922)
Set granular permissions to TXT DNS records with names starting with
`_acme-challenge.` only
This replaces original policy that is too permissive

The `Condition` clause uses [Route 53 resource record set
permission](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-permissions.html)

Policy tested with Certbot 2.9.0
2026-02-02 11:18:05 -08:00