PostgreSQL的SSL证书

PostgreSQL的SSL证书

这将介绍如何设置ssl证书以启用某些客户端上的PgAdmin的加密连接,以便在服务器机器上执行postgresql。 假设postgresql(使用ssl支持编译)和openssl已经在服务器(Linux)上安装和运行。 PgAdmin已经安装在客户端(Windows或Linux)上。

在服务器上,数据目录中需要三个证书。 CentOS默认为/ var / lib / pgsql / data /
root.crt (受信任的根证书)
server.crt (服务器证书)
server.key (私钥)

以root身份发出命令。

sudo -
cd /var/lib/pgsql/data

生成私钥(您必须提供密码)。

openssl genrsa -des3 -out server.key 1024

删除密码。

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

在私钥文件中设置适当的权限和所有者。

chmod 400 server.key
chown postgres.postgres server.key

创建服务器证书。
-subj是避免提示信息的快捷方式。
-x509生成一个自签名证书,而不是证书请求。

openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj '/C=CA/ST=British Columbia/L=Comox/O=TheBrain.ca/CN=thebrain.ca/emailAddress=info@thebrain.ca'

由于我们是自签名,我们使用服务器证书作为受信任的根证书。

cp server.crt root.crt

您需要编辑pg_hba.conf 。 例如:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust

# IPv4 remote connections for authenticated users hostssl all www-data 0.0.0.0/0 md5 clientcert=1
hostssl all postgres 0.0.0.0/0 md5 clientcert=1

您需要编辑postgresql.conf来实际激活ssl:

ssl = on

必须重新启动Postgresql服务器。

/etc/init.d/postgresql restart

如果服务器无法(重新)启动,请查看postgresql启动日志,默认为CentOS的/var/lib/pgsql/pgstartup.log ,因为这个原因。

在客户端,我们需要三个文件。 对于Windows,这些文件必须位于%appdata%\ postgresql \目录中。 对于Linux〜/ .postgresql /目录。
root.crt (受信任的根证书)
postgresql.crt (客户端证书)
postgresql.key (私钥)

在服务器机器上生成所需的文件,然后将其复制到客户端。 我们将在/ tmp /目录中生成所需的文件。

首先为客户机创建私钥postgresql.key ,并删除密码。

openssl genrsa -des3 -out /tmp/postgresql.key 1024
openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key

然后创建证书postgresql.crt 。 它必须由我们受信任的根(正在使用服务器计算机上的私钥文件)进行签名。 此外, 证书通用名 (CN)必须设置为要连接的数据库用户名

openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr -subj '/C=CA/ST=British Columbia/L=Comox/O=TheBrain.ca/CN=www-data'
openssl x509 -req -in /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial

将我们从server / tmp /目录创建的三个文件复制到客户机。

将受信任的根证书root.crt从服务器计算机复制到客户端计算机(对于Windows pgadmin %appdata%\ postgresql \或Linux pgadmin〜/ .postgresql / )。 更改postgresql.key的文件权限,以限制对您的访问(在Windows上可能不需要受限访问已被继承)。 从server / tmp /目录中删除文件。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏