Commit graph

11403 commits

Author SHA1 Message Date
Will Greenberg
d604fd48c9 certbot: lint fixup 2026-05-18 16:01:57 -07:00
Will Greenberg
1fa1a99c9d certbot-ci: lint fixups 2026-05-18 14:51:03 -07:00
Will Greenberg
55218f2c8f certbot-ci: fix dns-persist integration tests 2026-05-18 14:33:57 -07:00
Will Greenberg
13c867d94b certbot: add a setup hook arg for dns-persist challenges
dns-persist challenges only need their records setup once, making the
regularly occurring auth-script used in http and dns challenges a poor
fit. Instead, dns-persist challenges will use a separately configurable
"setup" hook which isn't persisted to the renewal conf.

This way, users can automate DNS TXT record creation with a script on an
inital run of certbot using --manual-setup-hook, and then simply omit
that argument on future runs for a non-interactive/automated renewal.
2026-05-14 13:37:36 -07:00
Will Greenberg
ce2ed95c2f acme: rm binary string tests 2026-05-14 13:37:36 -07:00
Will Greenberg
c564a5d222 certbot: allow dns-persist-01 to run with no hooks 2026-05-14 13:37:36 -07:00
Will Greenberg
38bc452282 certbot: add debug output for dns-persist 2026-05-14 13:37:36 -07:00
Will Greenberg
219a5966d6 certbot-ci: add renewal test for dns-persist 2026-05-14 13:37:36 -07:00
Will Greenberg
002a8f30d5 acme: rm unnecessary bytes check 2026-05-14 13:37:36 -07:00
Will Greenberg
ba9dc2a2e2 certbot-ci: nicer script templates 2026-05-14 13:37:36 -07:00
Will Greenberg
0e43050b2c
Update certbot/docs/using.rst
Co-authored-by: ohemorange <erica@eff.org>
2026-05-08 17:05:56 -07:00
Will Greenberg
02d80cbe79
Update certbot/docs/using.rst
Co-authored-by: ohemorange <erica@eff.org>
2026-05-08 12:13:20 -07:00
Will Greenberg
d0b2a2030a certbot: docs typo 2026-05-07 10:52:47 -07:00
Will Greenberg
2a5903081e certbot-ci: fix lint issues 2026-05-07 10:29:13 -07:00
Will Greenberg
2349235c15 certbot: update docs for dns-persist-01
This adds examples for using the dns-persist challenge, and clarifies
what needs to be done for automated renewal
2026-05-06 21:28:53 -07:00
Will Greenberg
483681ff2f certbot-ci: add integration test for dns-persist
This also bumps the pebble version to the current release w/
dns-persist-01 support
2026-05-06 20:13:44 -07:00
Will Greenberg
b1a3c488eb certbot: add tests for dns-persist-01 failures/warnings 2026-05-01 12:05:51 -07:00
Will Greenberg
0e2b0643a9 certbot: demote manual's preference for dns-persist-01
This'll avoid breaking things for users relying on http-01's
most-preferred status.
2026-04-30 13:32:57 -07:00
Will Greenberg
8723380611 Add newsfragment entry 2026-04-30 11:53:53 -07:00
Will Greenberg
bbcddc1222 certbot: update docs for dns-persist-01 2026-04-30 11:53:53 -07:00
Will Greenberg
431ee89d3a certbot: add dns-persist-01 challenge to manual plugin
In terms of UX, dns-persist-01 functions nearly identically to dns-01,
except once the TXT record has been made, no further action is required
from the user.
2026-04-30 11:53:53 -07:00
Will Greenberg
8af86a179e acme: add DNSPersist01 challenge and response 2026-04-30 11:53:53 -07:00
Will Greenberg
f9a75f854b acme: copy over is_wildcard_domain verbatim
This is just wholesale copied from certbot's utils. Maybe we could
DRY it up by having certbot rely on acme's, but IMO it's not a complex
enough function to justify that.
2026-04-30 11:44:10 -07:00
Brad Warren
0cc0844f2c
Release certbot 5.5.0 (#10616) 2026-04-07 14:29:50 -07:00
Erica Portnoy
fc91823888 Bump version to 5.6.0 2026-04-07 09:38:18 -07:00
Erica Portnoy
6a7443f654 Remove built packages from git 2026-04-07 09:38:18 -07:00
Erica Portnoy
82dda45352
Release 5.5.0 2026-04-07 09:38:17 -07:00
Erica Portnoy
171cb29183 Update changelog for 5.5.0 release 2026-04-07 09:37:45 -07:00
ohemorange
0eb8af20a5
Add @ing mattermost notifications to release build successes and failures (#10604)
Fixes https://github.com/certbot/certbot/issues/10599

This approach creates a new azure stage Notify and posts to the
mattermost webhook directly from within azure.

The python script uses the azure rest api to get the status of the
Deploy stage specifically. This will be failed if it failed, or skipped
if a previous stage failed, or abandoned if it timed out.

We may want to remove the existing azure build failure notification when
this is merged. It can be deleted from
[here](https://dev.azure.com/certbot/certbot/_settings/serviceHooks)
(it's the one that says "Build release, status Failed"), although
personally I think it's fine to keep it.

History of alternate general approaches I investigated:

1. give azure a custom file to say a message that depends on the
requestedBy field. impossible. no custom messages at all, much less
dependant ones.
2. hook azure build completed webhook trigger directly to github
respository_dispatch event. impossible. azure will send data in a
[specific
format](https://learn.microsoft.com/en-us/azure/devops/service-hooks/events?view=azure-devops#build.complete),
which is not the format [github
requires](https://docs.github.com/en/rest/repos/repos?apiVersion=2026-03-10#create-a-repository-dispatch-event).
3. option 2, but put a custom server somewhere to translate them. or to
grab azure and send directly to mattermost. this is a horrible idea; no
one wants to be managing a production server with secrets on it.
4. a mattermost bot is just a special user account. the sender still has
to format the data so mm can read it.
5. block on migrating from azure to github actions. drawback: this will
likely take a while, and also we're not definitely doing it. see
https://github.com/certbot/certbot/issues/10581
6. smaller than 5; wrap release in a github action that calls azure
inside of it. and then if we end up migrating more, it should be pretty
smooth to move things inside of actions. drawback: this will probably
not integrate as smoothly, given we use the azure integration. I did not
investigate further.
7. there doesn't seem to be any sort of github actions event about
builds passing on a certain branch that we can check
8. just message mattermost directly from within the pipeline as a final
stage --> where I landed.

There's further discussion in the comments about others ways we tried to
structure the pipeline and get information from azure that's not super
necessary to read to review this PR.

Relevant links:

https://learn.microsoft.com/en-us/azure/devops/service-hooks/events?view=azure-devops#build.complete

https://learn.microsoft.com/en-us/azure/devops/service-hooks/services/webhooks?view=azure-devops#resource-details-to-send

https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#agent-variables

https://learn.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml#job-status-functions


https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows

https://docs.github.com/en/rest/repos/repos?apiVersion=2026-03-10#create-a-repository-dispatch-event

https://docs.github.com/en/webhooks/webhook-events-and-payloads#repository_dispatch

Results of tests with the latest code are here:

https://dev.azure.com/certbot/certbot/_build/results?buildId=10309&view=results

https://dev.azure.com/certbot/certbot/_build/results?buildId=10310&view=results

https://dev.azure.com/certbot/certbot/_build/results?buildId=10311&view=results

Plus the mattermost messages did get sent.

---------

Co-authored-by: Brad Warren <bmw@users.noreply.github.com>
2026-04-02 14:14:27 -07:00
Brad Warren
08c2354f46
update poetry (#10615)
this is in response to
https://github.com/certbot/certbot/security/dependabot/126

as you can see by examining the github status checks on this PR, i ran
the full test suite and everything passed

i also don't think this PR requires two reviews
2026-04-02 14:11:07 -07:00
ohemorange
3d803821b7
Repin dependencies (#10611) 2026-03-27 09:03:31 -07:00
Will Greenberg
6f1c0b0abd
merge certbot-apache and certbot-nginx into certbot (#10522)
based on the suggestion @bmw made in #10484, this moves nearly
everything from `certbot-apache` and `certbot-nginx` into subdirectories
in `certbot/src/certbot/_internal`, and corresponding "extra"
dependencies are made for the certbot distribution. in their place,
entrypoint shims are made in the old distributions.

this way, installing `certbot[nginx]` will pull in the extra
dependencies needed for the nginx code, and also pull in the shim in
`certbot-nginx`, letting our plugin discovery system work just as it did
before. ditto for apache.

note that this doesn't yet deprecate anything, which was one of the
primary goals of the original issue -- i spun out that work into #10521

fixes #10484

---------

Co-authored-by: Brad Warren <bmw@users.noreply.github.com>
Co-authored-by: ohemorange <erica@eff.org>
2026-03-23 18:09:04 -07:00
ohemorange
9599364837
Use python warning filters from pytest.ini during integration tests (#10602)
Fixes https://github.com/certbot/certbot/issues/10180.

So first of all, the core issue here is that [pyca deliberately
chose](ec80c1c289/src/cryptography/utils.py (L15-L18))
to override the default python functionality and make deprecation
warnings appear by default. This isn't common. If they'd actually used a
`DeprecationWarning`, it wouldn't have shown up to users, at least. That
being said, we should still try to catch it, as we do in fact want to
know about deprecation warnings for our own updates.

To do that, this PR searches upwards for a `pytest.ini` file from the
file's location. If found, it reads the warnings from the file, and
passes them using the `PYTHONWARNINGS` env variable. It also explicitly
sets warnings to `error` always in case we can't find the `pytest.ini`,
and ignores the subsequent unverified-https-on-localhost warning. It
also fixes a warning in our test nginx config that seemed reasonable to
address.

I tested this by adding a temporary warning, which I then removed, but
since it turned out there were two other warnings, that wasn't actually
necessary.

Options I considered and rejected:

- Switch from `atexit` to calling `main` directly. To do this, we'd have
to switch our `main` function to something like a try-finally. That's
complicated by the fact that we call `atexit` from other places in the
code. Also, `exc_info` isn't availabe in `finally` while it is in
`at_exit`, so it's not as versatile. But mostly if we wanted to do this,
we'd have to implement a custom atexit handler, basically, and that
seems worse than this option.
- Looking into pytest-forked. It's apparently buggy and not being
maintained. Not even sure this is what it's for anyway.
- Multiple
[-W](https://docs.python.org/3/using/cmdline.html#cmdoption-W) options
can be given instead of an env variable. The env version seemed cleaner.
- More closely mimicking [how pytest finds ini
files](https://docs.pytest.org/en/stable/reference/customize.html#finding-the-rootdir).
It seemed unnecessary to me.

Potential drawbacks:
- If we move or rename the `pytest.ini` file and for some reason don't
do a reasonable grep for `pytest.ini`, we will no longer catch any
additional `ignore`s in there. But imo we're likely to do that grep, and
also a missing ignore will then show up when we run the tests.
2026-03-20 14:40:31 -07:00
Brad Warren
9ed92009db
deprecate certbot.ocsp (#10584)
this is part of https://github.com/certbot/certbot/issues/10517

to update this description in response to the discussion below, i'd
recommend reviewing this PR by commit. the first commit just moves
ocsp.py under _internal making no other changes while the second commit
fixes everything else up. the diff really isn't as big here as it looks
2026-03-19 15:14:10 -07:00
ohemorange
b42b986fb7
List certbot-dns-eurodns as a third-party plugin (#10605)
Fixes https://github.com/certbot/certbot/issues/10603

The link to the github repo is 404'ing. I've asked for a current link,
but the pypi link seems fine to me also. It was released yesterday so it
does seem to still be in active development.

<img width="910" height="214" alt="Screenshot 2026-03-18 at 10 30 19 AM"
src="https://github.com/user-attachments/assets/25208402-ebd1-4d9e-8c46-f1a3f5b83ec0"
/>
2026-03-18 10:52:14 -07:00
James Moss
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 Warren
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
ohemorange
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 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
ohemorange
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:
47786891ac/certbot/README.rst (thanks)
2026-03-06 17:58:31 -08:00
ohemorange
e6efb5c6d3
Add notice about AI generated code policy to pull request checklist (#10590) 2026-03-05 11:02:22 -08:00
ohemorange
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
Louis Opter
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
ohemorange
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-Andrews
59a631f21a
webroot: add IP address support (#10543)
Part of #10346
2026-02-12 11:00:03 -08:00
Brad Warren
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
ohemorange
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