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

启动PostgreSQL失败:证书密钥过小,重生成证书遇OpenSSL报错求助

问题分析
  • PostgreSQL 12启动失败:默认的ssl-cert-snakeoil.pem证书密钥长度不符合OpenSSL 3.0的安全阈值,被拒绝加载
  • make-ssl-cert生成证书失败:OpenSSL 3.0的RAND_write_file接口不再允许向非常规文件(如/dev/urandom)写入随机数据
解决步骤

方法1:手动生成合规SSL证书

跳过问题脚本,直接用OpenSSL生成满足长度要求的证书:

# 生成2048位私钥(OpenSSL 3.0最低要求)
sudo openssl genrsa -out /etc/ssl/private/ssl-cert-snakeoil.key 2048
# 生成证书签名请求,自动填充主机名作为CN
sudo openssl req -new -key /etc/ssl/private/ssl-cert-snakeoil.key -out /tmp/ssl-cert-snakeoil.csr -subj "/CN=$(hostname)"
# 生成自签名证书,有效期365天
sudo openssl x509 -req -days 365 -in /tmp/ssl-cert-snakeoil.csr -signkey /etc/ssl/private/ssl-cert-snakeoil.key -out /etc/ssl/certs/ssl-cert-snakeoil.pem
# 设置PostgreSQL需要的权限
sudo chmod 600 /etc/ssl/private/ssl-cert-snakeoil.key
sudo chgrp ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key
sudo chmod 644 /etc/ssl/certs/ssl-cert-snakeoil.pem

方法2:修复OpenSSL随机数配置(兼容make-ssl-cert)

修改OpenSSL配置,指定常规文件存储随机数:

  1. 编辑/etc/ssl/openssl.cnf,调整RANDFILE配置:
# 注释原有指向设备的配置,替换为常规文件路径
# RANDFILE = $ENV::HOME/.rnd
RANDFILE = /var/lib/openssl/.rnd
  1. 创建对应目录并设置权限:
sudo mkdir -p /var/lib/openssl
sudo chmod 700 /var/lib/openssl
sudo chown root:root /var/lib/openssl
  1. 重新运行证书生成命令:
sudo make-ssl-cert generate-default-snakeoil --force-overwrite

验证启动

完成证书配置后,启动并检查PostgreSQL状态:

sudo systemctl start postgresql@12-main
sudo systemctl status postgresql@12-main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:12:30