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

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

  • 版权声明:文章来源于网络采集,版权归原创者所有,均已注明来源,如未注明可能来源未知,如有侵权请联系管理员删除。

发表回复

后才能评论