From: Robert Pluim <rpluim@gmail.com>
To: Eric Marsden <eric.marsden@risk-engineering.org>
Cc: emacs-devel@gnu.org
Subject: Re: ALPN support for GnuTLS connections
Date: Mon, 14 Oct 2024 11:22:59 +0200 [thread overview]
Message-ID: <87jzebt4wc.fsf@gmail.com> (raw)
In-Reply-To: <c71c84d4-8372-4351-822c-5f05d070fdc7@risk-engineering.org> (Eric Marsden's message of "Sat, 12 Oct 2024 11:30:41 +0200")
>>>>> On Sat, 12 Oct 2024 11:30:41 +0200, Eric Marsden <eric.marsden@risk-engineering.org> said:
Eric> On 10/10/2024 15:54, Robert Pluim wrote:
>> Patch below. Works in my limited testing.
Eric> Excellent, I can confirm that this works with the PostgreSQL 17.0 use
Eric> case that I mentioned upthread, as well as with test servers from
Eric> OpenSSL and Rustls (see the attached test file).
Eric> Remaining questions in my mind:
Eric> (1) It would be useful for elisp code to be able to determine whether
Eric> Emacs has ALPN support. The elisp code will generally know that the
Eric> service it's connecting to requires ALPN, and it would be useful to be
Eric> able to inform the user that they should upgrade Emacs, instead of
Eric> getting a generic "connection failed" error. The C preprocessor test
Eric> HAVE_GNUTLS_ALPN_SET_PROTOCOLS isn't visible from elisp, nor is (I
Eric> think?) the binding to gnutls_alpn_set_protocols. This might also be
Eric> useful for other features such as the AEAD support. Perhaps a function
Eric> such as gnutls-feature-available-p(:alpn) ?
`gnutls-available-p' returns a list of available TLS features, we can put
"alpn" in there. AEAD is already there.
Eric> (2) The current behaviour of connection failing only depending on the
Eric> server's ALPN setting is I think less than ideal. If the server is not
Eric> configured to request ALPN, sending ALPN does not lead to failure. If
Eric> server is looking for ALPN and wants another protocol, the connection
Eric> fails. I think the default behaviour should be for the connection to
Eric> fail if one of the ALPN protocols requested by the client is not
Eric> selected: this seems to be more consistent and avoids a security
Eric> attack called ALPACA, https://alpaca-attack.com/. This just requires a
Eric> change to use GNUTLS_ALPN_MANDATORY (as well as updates to the
Eric> documentation)
Eric> ret = gnutls_alpn_set_protocols (state, protocols, count,
Eric> GNUTLS_ALPN_MANDATORY);
Yes, in order to palliate servers not following the requirement to be
strict, the recommendation is for the client to be strict. I donʼt
mind that, although we should add a way to turn it off. Perhaps an
":alpn-flags" parameter with symbols for the two current flags, plus
one that means "zero".
Eric> In fact I see reading the ALPACA web page that TLS clients are
Eric> recommended to use the SNI extension to indicate the server name that
Eric> they wish to connect to, which gnutls.c is not currently doing. One
Eric> thing at a time!
gnutls.c has been sending SNI since 2014
Eric> (3) Perhaps you could add the attached tiny patch to the logging
Eric> support for gnutls.c (which is very verbose), so that an EAGAIN
Eric> doesn't pollute logs at level 1.
Iʼm reluctant to make such a change: GnuTLS logging is really only for
when things go wrong, and Iʼd rather not handicap it. And this is what
`delete-matching-lines' is for 😺.
Robert
--
next prev parent reply other threads:[~2024-10-14 9:22 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-29 8:23 ALPN support for GnuTLS connections Eric Marsden
2024-09-30 9:21 ` Robert Pluim
2024-09-30 10:21 ` Eric Marsden
2024-09-30 13:13 ` Robert Pluim
2024-09-30 17:26 ` Eric Marsden
2024-10-07 8:22 ` Robert Pluim
2024-10-10 13:54 ` Robert Pluim
2024-10-10 16:23 ` Eli Zaretskii
2024-10-11 7:32 ` Robert Pluim
2024-10-12 9:30 ` Eric Marsden
2024-10-14 9:22 ` Robert Pluim [this message]
2024-10-15 7:06 ` Eric Marsden
2024-10-18 12:37 ` Robert Pluim
2024-10-15 3:02 ` Richard Stallman
2024-10-15 7:33 ` Eric Marsden
2024-10-22 5:38 ` Richard Stallman
2024-10-31 13:31 ` Eric Marsden
2024-11-18 4:06 ` Richard Stallman
2024-11-08 22:17 ` Björn Bidar
[not found] ` <87fro1jrq4.fsf@>
2024-11-11 5:12 ` Richard Stallman
2024-11-11 17:15 ` Björn Bidar
[not found] ` <87y11pu1x4.fsf@>
2024-11-15 4:45 ` Richard Stallman
2024-11-18 16:57 ` Björn Bidar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87jzebt4wc.fsf@gmail.com \
--to=rpluim@gmail.com \
--cc=emacs-devel@gnu.org \
--cc=eric.marsden@risk-engineering.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.