大家都知道,PostgreSQL是支持SSL,TLS协议的,以提升安全性。并且,对于这两个协议,版本越高的安全性越高,因为低版本可能存在一些bug, 能用高版本尽量使用高版本。 那么,如何设置使用哪个版本呢 ?
在PostgreSQL 12中包含以下两个参数 :
ssl_min_protocol_version
ssl_max_protocol_version
这两个参数用来控制数据库服务端最老和最新的能接受的协议版本。如果
ssl_min_protocol_version = 'TLSv1.1',那么当使用TLS1.0的连接将会被拒绝掉。
当前存在的SSL/TLS协议版本有:
- SSL 1.0 (never publicly released)
- SSL 2.0 (1995)
- SSL 3.0 (1996)
- TLS 1.0 (1999)
- TLS 1.1 (2006)
- TLS 1.2 (2008)
- TLS 1.3 (2018)
PG对SSL的支持是于 2000年发布的pg7版本。pg7.4支持SSL2.0, pg9.4支持SSL3.0。
PG支持哪个TLS版本取决于他所使用的OPENSSL的库的支持。所有的openssl版本都至少支持TLS1.0. 对于TLS1.1和1.2, 需要openssl 1.0.1版本, 对于TLS1.3,需要openssl1.1.1。
pg的服务端和客户端会自动协商通信使用的TLS版本,会找一个双方都支持的最新的版本。
可以通过查询pg_stat_ssl视图来查看当所有连接的SSL状态
SELECT * FROM pg_stat_ssl;
pid | ssl | version | cipher | bits | compression | client_dn | client_serial | issuer_dn
-------+-----+---------+------------------------+------+-------------+-----------+---------------+-----------
59609 | t | TLSv1.3 | TLS_AES_256_GCM_SHA384 | 256 | f | | |
参考文献:
https://www.2ndquadrant.com/en/blog/setting-ssl-tls-protocol-versions-with-postgresql-12/
评论(0)