0


postgresql 启用ssl安全连接方式

SSL的验证流程

在这里插入图片描述

利用openssl环境自制证书

在这里插入图片描述

CA 证书签发

创建私钥ca.key,使用des3算法,有效期2048天

openssl genrsa -des3 -out ca.key 2048

生成根CA证书请求(.csr)

openssl req -new -key ca.key -out ca.csr -subj "/C=CN/ST=GuangDong/L=GuangZhou/O=example/OU=GZYFZX/CN=example"

自签名得到公钥根证书(.crt)

openssl x509 -req -days 2048  -in ca.csr -signkey ca.key -out ca.crt

服务器证书签发

生成服务器私钥

openssl genrsa -des3 -out server.key 2048

生成服务端证书签名请求

openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=GuangDong/L=GuangZhou/O=example/OU=GZYFZX/CN=PGServer"

使用ca根证书对服务器证书签名生成公钥

openssl x509 -req  -days 2048 -sha256 -CA ca.crt -CAkey ca.key  -CAcreateserial -in server.csr -out server.crt

客户端证书

生成客户端私钥

openssl genrsa -des3 -out postgresql.key 2048

生成客户端证书签名请求

openssl req -new -key postgresql.key -out postgresql.csr -subj "/C=CN/ST=GuangDong/L=GuangZhou/O=example/OU=GZYFZX/CN=PGClient"

使用ca根证书对客户端证书签名生成公钥

openssl x509 -req  -days 2048 -sha256 -CA ca.crt -CAkey ca.key  -CAcreateserial -in postgresql.csr -out postgresql.crt

pg配置postgresql.conf修改

直接 cp ca.crt root.crt 使用ca的就可以。
我们一般会配置ssl、ssl_cert_file、ssl_key_file这三个,其他的一般维持默认值。这是三个参数分别的含义如下:

ssl: 是否支持SSL连接。默认是关闭的。

ssl_cert_file:指定包含SSL服务器证书的文件的名称。默认是server.crt。相对路径相对于数据目录。

ssl_key_file:指定包含SSL服务器私钥的文件的名称。默认是server.key。相对路径相对于数据目录。

ssl = on
ssl_ca_file = 'root.crt'
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'

将ssl设置为on,即表示打开ssl。SSL打开后,此时服务器将侦听同一TCP端口上的正常连接和SSL连接,并与任何连接客户机协商是否使用SSL。

注意:

(1)要在SSL模式下启动,必须包含服务器证书和私钥的文件。默认情况下,这些文件将被命名为server.crt和server.key。但是可以使用配置参数ssl_cert_file和ssl_key_file指定其他名称和位置。

(2)配置了SSL=on,并不代表会确保所有客户端总是通过SSL连接, 它只是表示允许使用SSL。如果想要确保所有连接都是用ssl, 还需要结合pg_hba.conf进行配置。比如添加类似“hostssl all all 0.0.0.0/0 md5 \n hostnossl all all 0.0.0.0/0 reject” 这样的配置。

标签: ssl postgresql 安全

本文转载自: https://blog.csdn.net/liuyunshengsir/article/details/128632964
版权归原作者 liuyunshengsir 所有, 如有侵权,请联系我们删除。

“postgresql 启用ssl安全连接方式”的评论:

还没有评论