On Mon, Sep 18, 2017 at 10:09:14PM +0200, martin f krafft wrote: > > Is that only for the initial key issuance? And then each host > > rotates the certs independently of the central system using the > > existing key to authenticate to LE? > > No, they're all managed centrally and pushed regularly.
So, though this is not your best option, you can centrally capture the updated fingerprints and automate their deployment (along with the most recent previous fingerprint to avoid race conditions). > > I am curious why you want to rotate the submission TLS client > > keys. If you are able to centrally push keys to the hosts, why > > bother with a CA at all? Why not generate a self-signed key+cert, > > store the fingerprint in a database, and leave LE out of it? The > > key would not change for the lifetime of the host. > > This is a very good question, and I'm blushing a bit having to admit > that I haven't thought of that. Heck, Debian even gives you a free > snakeoil cert on installation. I'll totally have to look into it. > Thanks for the brainfood. That should address your problem. You can think of these are complex passwords, where the server only knows the hash. You'd get the same security with a SASL password database that used decently hashed passwords as a backend. I agree that public key fingerprints are easier to manage, as that gets SASL out of the way. > At the moment, I have to assume, however, that LE wouldn't actually > care if I requested a cert renewal with a http-01 when I've used > dns-01 in the past. I'd also be curious to know the answer to that. Please follow-up if you find out. I'm sure that enough folks here use LE certs to justify a slightly off-topic post. > > I should also note that with LE and certbot's "--csr" option you > > can renew LE certificates *without* changing the public key. In > > which case the public key fingerprint is stable, and need not > > change. > > Hm, yes, I knew that, but I only just found out that postfix 2.9+ > can do check_ccert_access based on the public key fingerprint (not > the certificate fingerprint). So that's that then… The Postfix fingerprint security level does not distinguish between certificate fingerprints and public key fingerprints. It is assumed computationally infeasible to take a given public key and construct a certificate with the same hash. That'd be a 2nd pre-image attack, and none are known even for MD5 at present. So the client is accepted when the key in the lookup table matches either the certificate or the public key. I think I made the right call, a non-negligible number of DANE users initially get confused about the "selector" field, and publish the certificate digests along the public key selector (SPKI(1) instead of Cert(0)). > Indeed, it's not as easy as I had imagined. OTOH, it would not be > unfathomable to iterate all SANs and check each against an access > map. For sanity, one could introduce an upper bound. And it's > a policy decision whether the final decision would be the min or the > max of the set of sub-decisions… Yes, that's possible, but not architecturally appealing. We could default the limit to say 10, and if the client has more than 10 names process none of them. I'd not be a fan of processing just a subset. All that said, the case for submission based on CA authenticated key -> name bindings is not looking too strong. This is not going to have a significant priority unless a more compelling use-case shows up. -- Viktor.