在PostgreSQL上启用SSL

627 阅读2分钟

本博客描述了为独立的PostgreSQL设置启用SSL认证的过程。我们可以使用自签的证书来为我们的Postgres服务器启用ssl。在生产环境中,使用由证书授权机构(CA)签署的证书。

PostgreSQL支持SSL连接,允许用户安全地连接到他们的数据库。在这篇文章中,我们将看看如何在PostgreSQL数据库中启用SSL。

为PostgreSQL服务器生成SSL证书

按照以下步骤为Postgres服务器生成服务器证书、可信根证书和私钥。

  1. 以数据库用户身份登录,将目录改为数据目录。
cd /opt/PostgresPlus/9.5AS/data

2.通过输入一个密码短语来生成一个私钥。

openssl genrsa -des3 -out server.key 1024

3.移除密码短语,使用以下命令自动启动服务器。

openssl rsa -in server.key -out server.key

4.运行下面的命令,从私钥文件中删除组和其他人的权限。

chmod og-rwx server.key

5.运行下面的命令来创建一个自签名的证书。

openssl req -new -key server.key -days 3650 -out server.crt -x509

注意:你将被要求输入信息,这些信息将被纳入你的证书申请中。对于某些字段,将有一个默认值。如果你输入'.',该字段将被留空。

输出。

Country Name (2 letter code) [XX]:IN

6.对于自签的证书,使用服务器证书作为可信的根证书。

cp server.crt root.crt

准备好PostgreSQL单机版的SSL认证。

为了准备Postgres服务器的SSL认证,请运行以下步骤。

  1. 编辑postgresql.conf文件以激活SSL。
cd /usr/local/var/postgres

注意:这里是mac的路径,ubuntu和windows用户的路径可能不同。

vi postgresql.conf

取消注释并修改以下参数。

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

2.在pg_hba.conf文件中为客户机添加以下条目。

vi pg_hba.conf:
hostssl   all            all             0.0.0.0/0     cert
hostnossl all            all             0.0.0.0/0     reject
hostnossl all            all             ::/0          reject

3.3.为了使更改生效,通过运行以下命令重新启动Postgres服务器。

pg_ctl -D /usr/local/var/postgres stop
pg_ctl -D /usr/local/var/postgres start

4.4.为了验证SSL是否在独立的Postgres上被启用,运行下面的命令。

psql 'host=<hostname> port=5432 dbname=<name> user=<user> sslmode=verify-full sslcert=/tmp/postgresql.crt sslkey=/tmp/postgresql.key sslrootcert=/tmp/root.crt'

5.一旦数据库重新启动,通过指定localhost登录,以确保数据库通过TCP/IP连接。

psql -h localhost -U postgres

就这样,我们已经使用自签名证书启用了SSL。

钙技术 是一家技术公司,专注于以极快的速度提供高质量的规模软件。数据的数字和大小让我们兴奋。如果你在构建大规模应用程序方面有任何要求,或者想对你的系统或架构进行免费的健康检查,请随时向contact@francium.tech,我们会与你联系!


在PostgreSQL上启用SSL最初发表在Medium上的Francium Tech,在那里人们通过强调和回应这个故事继续对话。