postgresql withssl

Postgresql是支持ssl证书的;所在,在通常情况下,postgresql服务端和客户端之间的数据传输是明文传送的,那这就有一定的安全隐患。

如果需要加密需在服务端安装好openssl之后,就可以利用openssl指令生成一对私钥和证书,用以对数据进行加解密,然后再对配置文件稍作修改就可以了。

 

1. 利用openssl生成私钥和证书,可以写成一个shell脚本来实现。

openssl req -nodes -new -text -subj "/C=CH/ST=Shanghai/L=Jinan/O=HighGo/CN=tbing" -out server.req
openssl rsa -in privkey.pem -out ./server.key
openssl req -x509 -in server.req -text -key ./server.key -out ./server.crt
cp  server.* $PGDATA/../data5433/
chmod 600 $PGDATA/../data5433/server.key $PGDATA/../data5433/server.crt

在执行脚本文件前,注意定义好data目录的环境变量。执行脚本后就会发现在data目录下生成两个文件:私钥server.key和证书server.crt。在shell脚本中需要对这两个密钥修改一下权限,否则数据库起动不了。

2. 修改postgresql.conf配置文件,打开ssl连接。

ssl = on                              
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL'                                       
ssl_prefer_server_ciphers = on       
ssl_ecdh_curve = 'prime256v1'         
ssl_cert_file = 'server.crt'          
ssl_key_file = 'server.key'

 3. 修改pg_hba.conf配置文件,以hostssl方式连接。

hostssl    all             all             0.0.0.0/0            md5

4 生效配置

select pg_load_conf();

5连接数据库,显示已加密

[postgres@kbj-db-1 ~]$ psql -p5433 -hlocalhost -Upostgreadm -dpdb
Password for user ktccadmin: 
psql (11.4)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

6抓包查看

加密前:

tcpdump -t -s 0 -c 20 ip host 172.17.16.12 and 172.17.16.9 and port 5433 -w ./potgresql-ssl_4.cap

postgresql withssl

加密后:

postgresql withssl

postgresql withssl



上一篇:在Apache服务器上安装SSL证书


下一篇:第三十三个知识点:Bellcore攻击是如何攻击使用CRT的RSA的?