Re: Direct SSL connection with ALPN and HBA rules
Jacob Champion <jacob.champion@enterprisedb.com>
From: Jacob Champion <jacob.champion@enterprisedb.com>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: Daniel Gustafsson <daniel@yesql.se>, Robert Haas <robertmhaas@gmail.com>, Michael Paquier <michael@paquier.xyz>,
Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-04-29T19:32:36Z
Lists: pgsql-hackers
On Mon, Apr 29, 2024 at 12:06 PM Heikki Linnakangas <hlinnaka@iki.fi> wrote: > On 29/04/2024 21:43, Jacob Champion wrote: > > But if you're in that situation, what does the use of directonly give > > you over `sslnegotiation=direct`? You already know that servers > > support direct, so there's no additional performance penalty from the > > less strict mode. > > Well, by that argument we don't need requiredirect/directonly at all. > This goes back to whether it's a security feature or a performance feature. That's what I've been trying to argue, yeah. If it's not a security feature... why's it there? > There is a small benefit with sslmode=prefer if you connect to a server > that doesn't support SSL, though. With sslnegotiation=direct, if the > server rejects the direct SSL connection, the client will reconnect and > try SSL with SSLRequest. The server will respond with 'N', and the > client will proceed without encryption. sslnegotiation=directonly > removes that SSLRequest attempt, eliminating one roundtrip. Okay, agreed that in this case, there is a performance benefit. It's not enough to convince me, honestly, but are there any other cases I missed as well? > Oh I was not aware sslrootcert=system works like that. That's a bit > surprising, none of the other ssl-related settings imply or require that > SSL is actually used. For sslrootcert=system in particular, the danger of accidentally weak sslmodes is pretty high, especially for verify-ca mode. (It goes back to that other argument -- there should be, effectively, zero users who both opt in to the public CA system, and are also okay with silently falling back and not using it.) > Did we intend to set a precedence for new settings > with that? (I'll let committers answer whether they intended that or not -- I was just bringing up that we already have a setting that works like that, and I really like how it works in practice. But it's probably unsurprising that I like it.) --Jacob
Commits
-
Remove option to fall back from direct to postgres SSL negotiation
- fb5718f35ff6 17.0 landed
-
Reject SSL connection if ALPN is used but there's no common protocol
- 17a834a04d5a 17.0 landed
-
libpq: Enforce ALPN in direct SSL connections
- 03a0e0d4bb78 17.0 landed
-
libpq: If ALPN is not used, make PQsslAttribute(conn, "alpn") == ""
- 3c184092651b 17.0 landed
-
Fix documentation and comments on what happens after GSS rejection
- 5c9f35fc48ea 17.0 landed
-
doc: Add note to prevent server spoofing with SCRAM
- d0f4824a5410 16.0 cited