Re: Serverside SNI support in libpq

Heikki Linnakangas <hlinnaka@iki.fi>

From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Daniel Gustafsson <daniel@yesql.se>, Jacob Champion <jacob.champion@enterprisedb.com>
Cc: Jelte Fennema-Nio <postgres@jeltef.nl>, Dewei Dai <daidewei1970@163.com>, "li.evan.chao" <li.evan.chao@gmail.com>, Michael Paquier <michael@paquier.xyz>, Andres Freund <andres@anarazel.de>, Pgsql Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-12-17T09:06:36Z
Lists: pgsql-hackers
On 17/12/2025 11:03, Heikki Linnakangas wrote:
> On 12/12/2025 13:41, Daniel Gustafsson wrote:
>> I wonder if the way forward is to do both?  Heikki has a good point 
>> that when
>> working with pg_hosts.conf it should be clear from just that file what 
>> the
>> final config will be, and in the previous version that wasn't the case 
>> since
>> the ssl_snimode GUC set operation modes.  At the same time, Jacob has 
>> a point
>> that overriding configuration just because pg_hosts exists isn't 
>> transparent.
>>
>> Adding a boolean GUC which turns ph_hosts (and thus SNI) on or off can 
>> perhaps
>> fix both complaints?  If the GUC is on, pg_hosts - and only pg_hosts - 
>> is used
>> for configuring secrets.  By using the * fallback and no_sni rule in 
>> pg_hosts
>> all variations of configs can be achieved.  If the GUC is off, then 
>> the regular
>> SSL GUCs are used and pg_host is never considered (and thus SNI is not
>> possible).
>>
>> Such a GUC wouldn't make the patch all that much different from what 
>> it is
>> right now. What do you think about that middleground proposal?
> 
> I like that.
> 
> Instead of a boolean GUC, it could perhaps be a path to the pg_hosts 
> file. I haven't thought this through but somehow it feels more natural 
> to me than a "read this file or not" setting.

I was thinking that the boolean GUC would be called something like 
"read_pg_hosts_file = on / off", which feels unnatural. But thinking 
about this more, if the GUC is called something like "enable_sni = on / 
off", that feels much better, and I like that more than my suggestion of 
specifying the path to the pg_hosts file.

- Heikki