libpq: Set Server Name Indication (SNI) for SSL connections
authorPeter Eisentraut <peter@eisentraut.org>
Wed, 7 Apr 2021 13:11:41 +0000 (15:11 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Wed, 7 Apr 2021 13:11:41 +0000 (15:11 +0200)
commit5c55dc8b47338e72a4e598c155d2048d756fd10e
treea530a2724b25e84eebf7ad03b67aeec373f8378b
parentc1968426ba3de1fe37848863e35fff30261bf941
libpq: Set Server Name Indication (SNI) for SSL connections

By default, have libpq set the TLS extension "Server Name Indication" (SNI).

This allows an SNI-aware SSL proxy to route connections.  (This
requires a proxy that is aware of the PostgreSQL protocol, not just
any SSL proxy.)

In the future, this could also allow the server to use different SSL
certificates for different host specifications.  (That would require
new server functionality.  This would be the client-side functionality
for that.)

Since SNI makes the host name appear in cleartext in the network
traffic, this might be undesirable in some cases.  Therefore, also add
a libpq connection option "sslsni" to turn it off.

Discussion: https://www.postgresql.org/message-id/flat/7289d5eb-62a5-a732-c3b9-438cee2cb709%40enterprisedb.com
contrib/postgres_fdw/expected/postgres_fdw.out
doc/src/sgml/libpq.sgml
src/interfaces/libpq/fe-connect.c
src/interfaces/libpq/fe-secure-openssl.c
src/interfaces/libpq/libpq-int.h