On Tue, Jul 01, 2025 at 01:13:36PM +0200, Peter Krempa wrote:
> On Tue, Jul 01, 2025 at 11:38:37 +0100, Daniel P. Berrangé wrote:
> > On Tue, Jul 01, 2025 at 10:59:06AM +0200, Peter Krempa wrote:
> > > On Tue, Jul 01, 2025 at 09:49:57 +0100, Daniel P. Berrangé wrote:
> > > > On Mon, Jun 30, 2025 at 07:25:05PM +0200, Peter Krempa via Devel wrote:
> > > > > From: Peter Krempa <pkre...@redhat.com>
> > > > > 
> > > > > Key encipherment is required only for RSA key exchange algorithm. With
> > > > > TLS 1.3 this is not even used as RSA is used only for authentication.
> > > > > 
> > > > > Since we can't really check when it's required ahead of time drop the
> > > > > check completely. GnuTLS will moan if it will not be able to use RSA
> > > > > key exchange.
> > > > 
> > > > GNUTLS only reports problems at runtime, while the libvirt code is
> > > > used at system startup. This greatly improves the debuggability of
> > > > sysadmin config screwups, so we don't really want to delegate to
> > > > GNUTLS for this.
> > > > 
> > > > > In commit 11867b0224a2 I tried to relax the check for some eliptic
> > > > > curve algorithm that explicitly forbid it. Based on the above the 
> > > > > proper
> > > > > solution is to completely remove it.
> > > > 
> > > > We need to invert the check - instead of excluding just ECDSA, we
> > > > need to include only DSA and GHOST algorithms.
> > > 
> > > Originally I did the same but then I read (and verified; see my
> > > followup) that with TLS 1.3 the RSA key exchange algorithm isn't even
> > > used so keyEncipherment capability isn't even needed.
> > 
> > Ok, yeah, I've found that now too.
> > 
> > If we're removing this entirely from the impl, we should also update
> > the docs/kbase/tlscerts.rst.
> > 
> > IIRC, we need to remove the 'encryption_key' flag to stop gnutls
> > adding 'key encipherment' to DSA certs.
> 
> I've found that removing the flag isn't necessary. gnutls just doesn't
> use it with keys that don't support it.
> 
> I've actually used my very old script built on the examples from the
> above page and just added use of one of the fancy new "post quantum"
> signature algorithms and it simply worked ven with "encryption_key"
> being present in the 'info' file.

Yes, gnutls simply ignores the 'encryption_key' setting in most
cases, but we should remove it from docs given that it is
redundant & potentially misleading.

> > > If you thing it's important to stay compatible in the pre-check also
> > > with older protocols then I can keep it but to me it didn't make too
> > > much sense.
> > 
> > Yeah, TLS 1.3 is effectively the baseline for libvirt unless talking to
> > very old systems, as gnutls will preferentially negotiate it, we only
> > need care about libvirt clients.
> 
> Based on this I guess we could drop it from the examples. I think that
> it'd be much more beneficial to hint to better ciphers (but that'd also
> effectively make it obsolete). 

We've generally assumed that gnutls will pick the best ciphers itself
based on crypto priority config on the host. 

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Reply via email to