我不确定这个主题是否适合这里,但我不知道在哪里问它。
我正在尝试在Windows10上打开PostgreSQL 10.16的SSL。
我阅读了很多关于为 PostgreSQL 创建 SSL 证书的文档,但有关 Windows 10 的文档很少且没有详细说明。
以下是我执行的步骤:
步骤1,我从下载 Windows 的 OpenSSL 版本 https://slproweb.com/products/Win32OpenSSL.html
并使用路径 C:\OpenSSL-Win64 安装,设置系统变量。
第2步,我使用以管理员身份运行的 cmd.exe 通过命令行创建 server.key:
genrsa -out server.key 4096
,在私钥文件上设置适当的权限和所有者(此处https://stackoverflow.com/a/51463654)
icacls server.key /reset
icacls server.key /inheritance:r /grant:r "CREATOR OWNER:F"
我在这个命令行中收到了 cmd.exe 的响应
C:\WINDOWS\system32>icacls server.key /reset
processed file: server.key
Successfully processed 1 file; Failed processing 0 files
C:\WINDOWS\system32>icacls server.key /inheritance:r /grant:r "CREATOR OWNER:F"
processed file: server.key
Successfully processed 1 files; Failed processing 0 files
继续创建服务器证书:
req -new -x509 -days 1826 -key server.key -out server.crt
步骤3,由于我是自签名的,所以我使用服务器证书作为受信任的根证书,所以我有 3 个文件:server.key、server.crt 和 root.crt(这是服务器 crt 的副本)
我将这三个文件移动到 C:\Program Files\PostgreSQL\10\data
步骤4,我正在设置postgresql.conf:
listen_addresses = '*'
port = 5432
ssl=on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
ssl_ca_file = 'root.crt'
并将命令行添加到 pg_hba.conf 的末尾:
# IPv4 remote connections for authenticated users
hostssl all postgres 0.0.0.0/0 md5 clientcert=1
最后当我重新启动 PostgreSQL 时,出现以下错误
The PostgreSQL -x64-10 -PostgreSQL Server 10 service on the Local Computer started and then stopped. Some services stop automatically if they are not in use by other services or programs.
在我的 PostgreSQL 日志中:
2021-03-28 16:35:44.735 +07 [7624] LOG: database system was shut down at 2021-03-28 16:34:51 +07
2021-03-28 16:35:45.099 +07 [7044] LOG: database system is ready to accept connections
2021-03-28 17:39:37.827 +07 [7044] LOG: received fast shutdown request
2021-03-28 17:39:37.834 +07 [7044] LOG: aborting any active transactions
2021-03-28 17:39:37.839 +07 [7044] LOG: worker process: logical replication launcher (PID 7972) exited with exit code 1
2021-03-28 17:39:37.843 +07 [7880] LOG: shutting down
2021-03-28 17:39:37.877 +07 [7044] LOG: database system is shut down
我怀疑 PostgreSQL 没有读取我放在其数据目录中的 3 个文件。
我参考了这些文件
https://www.howtoforge.com/postgresql-ssl-certificates
https://stackoverflow.com/questions/43959324/chmod-og-rwx-server-key-in-windows/51463654#51463654
https://www.postgresql.org/docs/10/ssl-tcp.html
我已经折腾好几天了,不知道如何解决这个问题