Youfu Zhang [Sun, 29 Mar 2026 07:17:22 +0000 (07:17 +0000)]
Add DNS-PERSIST-01 challenge support
- Add dns-persist-01 to allowed challenge types in verify_config()
- Implement dns-persist-01 case in challenge preparation (no dynamic token)
- Skip deployment and cleanup for dns-persist-01
- Update help text and documentation
- Add man page and README updates
- Update CHANGELOG
Lukas Schauer [Fri, 24 Oct 2025 07:14:05 +0000 (09:14 +0200)]
implement workaround for openssl regression (fixes #981)
The introduction of the `-multi` option to the x509 subcommand
introduced a regression to the `-checkend` behaviour, preventing
openssl to correctly indicate the certificate expiry status via
its exit code.
This commit introduces a (maybe temporary) workaround by instead
checking the output string.
Victor Coss [Sun, 1 Jun 2025 00:45:56 +0000 (20:45 -0400)]
Don't allow CDN's to send cached responses
A lot of CA's use a CDN service to protect and speed up their ACME service. These CDN services can sometimes miss-behave and send cached results. For example DigiCert's ACME service uses the Imperva CDN. It will send cached results on the DNS validation, challenge endpoint, resulting in it being stuck in the processing status, thus dehydrated is hung and never gets the certificate.
Christian Kujau [Sun, 14 Jul 2024 22:21:23 +0000 (00:21 +0200)]
Disable warning when reading CSRs from stdin.
Coming across the same warning that was reported in
[PR#929](https://github.com/dehydrated-io/dehydrated/pull/929 "Suppress
openssl warning about reading from stdin") this is my attempt to disable
this warning. Instead of discarding stderr in total (this can still be
useful), we just use the "-in" parameter as hinted in the warning:
$ foo=$(cat req.csr)
$ <<<${foo} openssl req -noout -verify > /dev/null; echo $?
Warning: Will read cert request from stdin since no -in option is given
0
hshh [Mon, 12 Aug 2024 17:21:57 +0000 (01:21 +0800)]
Add support for Google Trust Services.
Official Documentation: https://cloud.google.com/certificate-manager/docs/public-ca-tutorial
The first registration requires obtaining EAB_KID and EAB_HMAC_KEY according to the document, and setting CONTACT_EMAIL, EAB_HMAC_KEY, EAB_KID in the configuration file.
Simon Deziel [Wed, 23 Mar 2022 17:31:31 +0000 (13:31 -0400)]
egrep is deprecated
egrep has been deprecated since 2007 and warns it's obsolete since:
https://git.savannah.gnu.org/cgit/grep.git/commit/?id=a9515624709865d480e3142fd959bccd1c9372d1
Joao Morais [Sun, 17 Oct 2021 12:26:46 +0000 (09:26 -0300)]
fix command_version on Darwin/macOS 11
Current output of `uname` on Darwin/macOS 11 is only `Darwin`, which
breaks the premisse used in `command_version()`. This update adds
`Darwin` alongside `BSD`.
{
"type": "urn:acme:error:serverInternal",
"detail": "ACMEv1 Brownout in Progress. ACMEv1 will fully turn off on June 1, 2021. Check https://letsencrypt.status.io/ for more details."
}
- Ensure that all per-certificate settings are saved and restored in
store_configvars() and reset_configvars() - that's what makes them
per-certificate in the first place...
- Add OCSP_FETCH and OCSP_DAYS in the documented list of supported
per-certificate configs, since the code does allow these.
Lukas Schauer [Sat, 12 Dec 2020 02:01:47 +0000 (03:01 +0100)]
Do not revalidate authorizations on forced renewal
This commit introduces a new cli argument `--force-validation` which,
when used in combination with `--force` ignores valid domain
authorizations and forces a revalidation.
This has been implemented since at least LE seems to have changed some
behavior on valid authorizations. Only the previously validated
authorization-type is reusable, causing dehydrated to error out when
changing from recently validated authorization types while still trying
to force-renew certificates for whatever reason (e.g. changing algorithms).
cleanup: also do cleanup if symlink is broken (closes #667)
The cleanup command skips filetypes for which the symlink is broken or
doesn't exist. However, if dehydrated fails, we may end up in exactly
the situation that the symlink doesn't exist (yet). If dehydrated fails
repeatedly, we may end up with a lot of old cert.csr, cert.pem and
privkey.pem files, so we really want to be able to clean them up.
Remove all files if the symlink is broken/missing, instead of skipping
those files.