Re: Experiments with Postgres and SSL
От | Greg Stark |
---|---|
Тема | Re: Experiments with Postgres and SSL |
Дата | |
Msg-id | CAM-w4HPjM5mXMorVKYZhm5FwSty5PY3-gUHqfdauHL2cLMRKSA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Experiments with Postgres and SSL (Vladimir Sitnikov <sitnikov.vladimir@gmail.com>) |
Ответы |
Re: Experiments with Postgres and SSL
Re: Experiments with Postgres and SSL |
Список | pgsql-hackers |
On Thu, 19 Jan 2023 at 15:49, Vladimir Sitnikov <sitnikov.vladimir@gmail.com> wrote: > > What if the server that supports 'fast TLS' added an extra notification in case client connects with a classic TLS? > Then a capable client could remember host:port and try with newer TLS appoach the next time it connects. > > It would be transparent to the clients, and the users won't need to configure 'prefer classic or fast TLS' > The old clients could discard the notification. Hm. I hadn't really thought about the case of a new client connecting to an old server. I don't think it's worth implementing a code path in the server like this as it would then become cruft that would be hard to ever get rid of. I think you can do the same thing, more or less, in the client. Like if the driver tries to connect via SSL and gets an error it remembers that host/port and connects using negotiation in the future. In practice though, by the time drivers support this it'll probably be far enough in the future that they can just enable it and you can disable it if you're connecting to an old server. The main benefit for the near term is going to be clients that are specifically designed to take advantage of it because it's necessary to enable the environment they need -- like monitoring tools and proxies. I've attached the POC. It's not near committable, mainly because of the lack of any proper interface to the added fields in Port. I actually had a whole API but ripped it out while debugging because it wasn't working out. But here's an example of psql connecting to the same server via negotiated SSL or through stunnel where stunnel establishes the SSL connection and psql is just doing plain text: stark@hatter:~/src/postgresql$ ~/pgsql-sslhacked/bin/psql 'postgresql://localhost:9432/postgres' psql (16devel) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off) Type "help" for help. postgres=# select * from pg_stat_ssl; pid | ssl | version | cipher | bits | client_dn | client_serial | issuer_dn -------+-----+---------+------------------------+------+-----------+---------------+----------- 48771 | t | TLSv1.3 | TLS_AES_256_GCM_SHA384 | 256 | | | (1 row) postgres=# \q stark@hatter:~/src/postgresql$ ~/pgsql-sslhacked/bin/psql 'postgresql://localhost:8999/postgres' psql (16devel) Type "help" for help. postgres=# select * from pg_stat_ssl; pid | ssl | version | cipher | bits | client_dn | client_serial | issuer_dn -------+-----+---------+------------------------+------+-----------+---------------+----------- 48797 | t | TLSv1.3 | TLS_AES_256_GCM_SHA384 | 256 | | | (1 row) -- greg
Вложения
В списке pgsql-hackers по дате отправления: