PostgerSQL 安全管理 自签名私有证书
1 背景知识
自签名私有证书只能加密连接,并不能认证服务器或者客户端身份。
2 证书准备
1、要为服务器创建一个有效期为365天的简单自签名证书,可以使用下面的OpenSSL命令。
2、将node1
替换为服务器的主机名:
mkdir ~/.ssl && cd ~/.ssl
openssl req -new -x509 -days 365 -nodes -text -out server.crt \
-keyout server.key -subj "/CN=node1"
3、为证书分配合适的权限。
chmod og-rwx server.key
Warning
1、如果文件的权限比这个更自由,数据库将拒绝使用该文件。
2、尽管可以使用自签名证书进行测试,但是在生产中应该使用由证书颁发机构(CA)(通常是企业范围的根CA)签名的证书。
3 数据库配置SSL
3.1 将server .crt和server.key移动到$PGDATA
cd ~/.ssl
mv server.crt server.key $PGDATA
3.2 配置postgresql.conf. 打开ssl
vi $PGDATA/postgresql.conf
--------------------input------------------------------
ssl = on
#ssl_ca_file = ''
ssl_cert_file = 'server.crt'
#ssl_crl_file = ''
ssl_key_file = 'server.key'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' ## 这个保持默认即可
3.3 配置pg_hba.conf, 强制让客户端使用ssl连接数据库
vi $PGDATA/pg_hba.conf
--------------------input------------------------------
hostssl all all 127.0.0.1/32 scram-sha-256
hostssl all all 192.168.10.0/24 scram-sha-256
3.4 重启数据库
pg_ctl restart
4 客户端连接和验证
psql -h 127.0.0.1 -U postgres -d testdb
//屏幕输出:
Password for user postgres:
psql (12.9)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.