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

Nginx无法加载带密码的SSL私钥,权限修改后仍报错求助

Nginx无法加载带密码保护的SSL私钥问题

问题现象

SSL私钥路径为 /etc/ssl/private/PRIVATEKEY.key,执行nginx -t验证配置通过后,执行:

systemctl reload nginx

出现错误:

nginx: [emerg] cannot load certificate key "/etc/ssl/private/PRIVATEKEY.key": PEM_read_bio_PrivateKey() failed (SSL: error:1>
Jan 29 14:00:33 vmi1520937 systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
Subject: Unit process exited
Defined-By: systemd

已尝试设置权限:

sudo chmod 600 PRIVATEKEY.key
sudo chown root:root PRIVATEKEY.key

问题依旧。后续确认私钥通过以下命令生成,带有密码保护:

openssl req -newkey rsa:2048 -keyout PRIVATEKEY.key -out MYCSR.csr

解决方法

方法1:移除私钥的密码保护(推荐用于自动启动场景)

若希望Nginx能自动启动,无需每次输入密码,可通过openssl移除私钥密码:

  1. 切换到私钥所在目录:
cd /etc/ssl/private/
  1. 执行命令移除密码(执行后需输入原私钥密码):
openssl rsa -in PRIVATEKEY.key -out PRIVATEKEY-nopass.key
  1. 替换原私钥(或修改Nginx配置文件指向新的无密码密钥):
mv PRIVATEKEY.key PRIVATEKEY.key.bak
mv PRIVATEKEY-nopass.key PRIVATEKEY.key
  1. 重新设置正确权限:
chmod 600 PRIVATEKEY.key
chown root:root PRIVATEKEY.key
  1. 验证配置并重载Nginx:
nginx -t
systemctl reload nginx

方法2:让Nginx加载带密码的私钥(手动输入密码)

若必须保留私钥的密码保护,可使用nginx自带的重载命令,执行时会提示输入私钥密码:

nginx -s reload

注意:此方式每次重启或重载Nginx都需手动输入密码,服务器重启后Nginx无法自动启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 08:12:42