暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GPDB7 TLSv1.3 双向认证配置(二)GUC ssl_min_protocol_version

原创 Yongtao 2024-05-14
251

机器信息

模拟真实用户环境,准备以下两台机器,用机器一(CLIENT)的psql访问机器二(SERVER)的gpdb cluster。

  • 机器1(CLIENT)信息
    ip:IP-client
    openssl version: OpenSSL 1.0.2k-fips 26 Jan 2017 (2018年以后才有TLS1.3,所以该机器只支持TLS v1.2)

  • 机器2(SERVER)信息:
    ip: IP-server
    openssl version: OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022) (该机器支持TLS v1.3)

正常配置pg_hba.conf让IP-client的psql能连接上IP-server。

准备SSL

使用类似前文的方式配置SSL。
注意两边生成的ca.pem需要scp对拷交换。

机器1(CLIENT)使用脚本生成,ca.pem,postgres.pem,postgres.key,客户端通过环境变量配置SSL。

export PGSSLROOTCERT=/home/hyongtao/ssl/ca.pem; export PGSSLCERT=/home/hyongtao/ssl/postgres.pem; export PGSSLKEY=/home/hyongtao/ssl/postgres.key;

机器2(SERVER)使用脚本生成,ca.pem, server.pem, server.key。服务器端通过conf配置SSL,并运行gpstop -ar重新启动。配置pg_hba.conf文件如下:

ssl = on ssl_ca_file = '/home/hyongtao/ssl/ca.pem' ssl_cert_file = '/home/hyongtao/ssl/server.pem' #ssl_crl_file = '' ssl_key_file = '/home/hyongtao/ssl/server.key'

创建一个hyongtao-ssl用户后,配置pg_hba.conf文件如下,

hostssl all hyongtao-ssl 0.0.0.0/0 md5 clientcert=1

对比实验验证GUC ssl_min_protocol_version的有效性

在机器2(SERVER)的postgresql.conf配置GUC,配置后重启
然后在机器1(CLIENT)运行psql连接机器2(SERVER)。

(1)配置GUC ssl_min_protocol_version = ‘TLSv1’

$ psql -h IP-server -U hyongtao-ssl -d gpadmin -p 7000
Password for user hyongtao-ssl:
psql (12.12)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

由于机器1(CLIENT)的openssl最高支持TLV v1.2,满足机器2(SERVER)GUC中最小版本TLSv1的要求,所以能成功连接。

(2)配置GUC ssl_min_protocol_version = ‘TLSv1.3’

$ psql -h IP-server -U hyongtao-ssl -d gpadmin -p 7000
psql: error: SSL error: tlsv1 alert protocol version
FATAL:  no pg_hba.conf entry for host "IP-client", user "hyongtao-ssl", database "gpadmin", SSL off

由于机器1(CLIENT)的openssl最高支持TLV v1.2,不满足机器2(SERVER)GUC中最小版本TLS v1.3的要求。所以报错tlsv1 alert protocol version。无法连接。

一些其它信息

当你在机器1(CLIENT)强行设置ssl_min_protocol_version = ‘TLSv1.3’,gpdb将会启动不了,

会出现如下log:
2024-05-14 14:43:57.458976 CST,p3404,th1619179584,0,seg-1,“FATAL”,“XX000”,“ssl_min_protocol_version setting TLSv1.3 not supported by this build”,“ssl_protocol_version_to_openssl”,“be-secure-openssl.c”,1344,1 0xc45494 postgres errstart (elog.c:484)

该机器的openssl版本只能支持到TLS v1.2。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论