On Sun, Aug 25, 2024 at 12:07:34PM -0400, pgnd wrote:
I'm using dane "3 1 2" records; all checks are good.
Which domain(s)?
I note LE's current Chain of Trust currently are
roots: ISRG Root X1: RSA 4096, until 2030-06-04 (generated 2015-06-04)
See below, X1 is presently set to expire in 2035.
ISRG Root X2: ECDSA P-384, until 2035-09-04 (generated 2020-09-04)
and
intermediates: Let’s Encrypt E5: ECDSA P-384, until 2027-03-12 Let’s Encrypt E6: ECDSA P-384, until 2027-03-12 Let’s Encrypt R10: RSA 2048, until 2027-03-12 Let’s Encrypt R11: RSA 2048, until 2027-03-12
(plus 3 backups for each pair)
to date, my cert generation has had
DEFAULT_PREFERRED_CHAIN='ISRG Root X1'
, i.e. RSA.
Yes, The root is RSA, but in many cases the underlying chain is ECDSA, There are two versions of E5..9 certs, with one signed by X1 and the other by X2.
_25._tcp.mail.censored.example. IN TLSA 2 1 1 0b9fa5a59eed715c26c1020c711b4f6ec42d58b0015e14337a39dad301c5afc3 _25._tcp.mail.censored.example. IN TLSA 2 1 1 8d02536c887482bc34ff54e41d2ba659bf85b341a0a20afadb5813dcfbcf286d mail.censored.example[192.0.2.1]: pass: TLSA match: depth = 2, name = mail.censored.example TLS = TLS13 with AES256GCM-SHA384,X25519,PubKeyALG_EC name = mail.censored.example depth = 0 Issuer CommonName = E5 Issuer Organization = Let's Encrypt notBefore = 2024-08-16T19:30:03Z notAfter = 2024-11-14T19:30:02Z Subject CommonName = mail.censored.example pkey sha256 [nomatch] <- 3 1 1 8fb34b1f452c2acba0e9c418defd705f09b9abf6006da7bfc6deafa5149bf7f2 depth = 1 Issuer CommonName = ISRG Root X1 Issuer Organization = Internet Security Research Group notBefore = 2024-03-13T00:00:00Z notAfter = 2027-03-12T23:59:59Z Subject CommonName = E5 Subject Organization = Let's Encrypt pkey sha256 [nomatch] <- 2 1 1 3586d4ecf070578cbd27aedce20b964e48bc149faeb9dad72f46b857869172b8 depth = 2 Issuer CommonName = ISRG Root X1 Issuer Organization = Internet Security Research Group notBefore = 2015-06-04T11:04:38Z notAfter = 2035-06-04T11:04:38Z Subject CommonName = ISRG Root X1 Subject Organization = Internet Security Research Group pkey sha256 [matched] <- 2 1 1 0b9fa5a59eed715c26c1020c711b4f6ec42d58b0015e14337a39dad301c5afc3
Note that the 2nd TLSA RR in the above (lightly anonymised) example has a digest matching R3, rather than E5. It still works via X1, but it is fair to assume that the operator intended for both TLSA records to be effective. A more robust TLSA RRset based on LE's CAs would list both X1 and X2, and then E5..E9:
X1: IN TLSA 2 1 1 0b9fa5a59eed715c26c1020c711b4f6ec42d58b0015e14337a39dad301c5afc3 X2: IN TLSA 2 1 1 762195c225586ee6c0237456e2107dc54f1efc21f61a792ebd515913cce68332 E5: IN TLSA 2 1 1 3586d4ecf070578cbd27aedce20b964e48bc149faeb9dad72f46b857869172b8 E6: IN TLSA 2 1 1 d016e1fe311948aca64f2de44ce86c9a51ca041df6103bb52a88eb3f761f57d7 E7: IN TLSA 2 1 1 cbbc559b44d524d6a132bdac672744da3407f12aae5d5f722c5f6c7913871c75 E8: IN TLSA 2 1 1 885bf0572252c6741dc9a52f5044487fef2a93b811cdedfad7624cc283b7cdd5 E9: IN TLSA 2 1 1 f1440a9b76e1e41e53a4cb461329bf6337b419726be513e42e19f1c691c5d4b2
and, I publish both RSA and ECDSA DANE records.
If you also have both certificate algorithms deployed live on your server keep in mind that you then need two sets of "3 1 1" records, one for each algorithm:
https://mail.sys4.de/pipermail/dane-users/2017-August/000416.html
a switch to ECDSA
DEFAULT_PREFERRED_CHAIN='ISRG Root X2'
should be (?) reasonably well tolerated.
i'm unclear on
is it DANE-safe? or DANE-recommended?
Yes, though it is in principle possible that there are DANE-enabled senders that support only RSA, and then might not be able to send you mail. At this point in time, that'd be the hypothetical sender's fault, they'd have little excuse to not support ECDSA. I don't know whether the problem is real or how prevalent it might be.
Simpler to stick with RSA for now, there's little reason to be worried about brute-force attacks on 2048-bit RSA keys, and email servers serve a lot fewer connections per second than HTTP servers, so the bandwidth and CPU differences are not significant.
I have no experience using Let's Encrypt (perhaps some ACME clients make this easier than others) with simultaneous RSA and ECDSA certs for the same hostname.