You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL14替换自定义SSL密钥后服务无法启动问题求助

密钥格式要求说明

PostgreSQL 14 不强制要求使用.pem格式密钥,.crt和.key格式的PEM编码证书、私钥完全可以正常使用,只要文件本身是标准X.509证书和PKCS#8/PKCS#1格式私钥即可,和13版本的格式要求没有差异。

常见故障原因

  • 密钥权限与属主不符合校验要求
    PostgreSQL 14对SSL密钥的权限校验比13版本更严格,仅设置0444权限不足:首先私钥权限不能高于0600(建议设为0400避免误改),其次密钥和证书文件的属主必须是PostgreSQL运行用户postgres,且密钥文件所在的上级目录必须允许postgres用户访问。你自行生成的密钥大概率是root或其他用户创建的,属主错误会导致PostgreSQL启动时读取密钥失败。
    修复命令参考:

    chown postgres:postgres /你的/密钥/路径/server.key /你的/证书/路径/server.crt
    chmod 0400 /你的/密钥/路径/server.key
    
  • 私钥为加密状态无法非交互读取
    如果你的私钥是加密存储的(打开时需要输入密码),PostgreSQL启动时需要交互输入密码才能读取密钥,通过systemd启动服务时无法进行交互操作,就会导致启动失败,出现active (exited)的状态。
    可通过以下命令验证私钥是否加密:

    openssl rsa -in server.key -check -noout
    

    如果执行后要求输入密码,说明私钥为加密状态,可通过以下命令解密后再使用:

    openssl rsa -in 加密的私钥.key -out 解密后的私钥.key
    
  • 日志读取路径错误导致无法定位根因
    你提到无新启动日志,大概率是读取了错误的日志路径,Ubuntu系统下PostgreSQL 14的默认日志存储路径为/var/log/postgresql/postgresql-14-main.log,查看该文件即可看到明确的启动报错信息,快速定位具体问题。

  • 配置参数路径异常
    如果postgresql.conf中填写的是密钥绝对路径,需要确认路径中没有软链接、或没有放在/root这类postgres用户无访问权限的目录下;如果填写的是相对路径,要确认密钥文件确实存放在PostgreSQL数据目录根路径下。

快速验证方法

可手动切换到postgres用户直接启动PostgreSQL进程,就能在终端直接看到启动报错:

su - postgres
/usr/lib/postgresql/14/bin/postgres -D /var/lib/postgresql/14/main

内容的提问来源于stack exchange,提问作者Matthew Forth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:06:03