在 nginx 启动时免输入 SSL 证书密码

之前申请了 wosign 的免费 SSL 证书,后来发现 wosign 证书不支持单个证书同时验证根域和 www 子域,所以后面又换成了现在的 StartCom 证书。

不过 StartCom 有个缺点,就是在 nginx 重启重新加载的时候会让输入私钥的密码。虽然输密码很烦,但是一般只用输入一次就不用管了,所以我也就没考虑这么多。

结果没过几天就杯具了。前两周把主站和 git 都搬到了windowsazurue上面,昨天重启机器之后,发现 ssh 连不上了。于是直接找 azure 的客服,他们查了后告诉我机器启动过程中,在 nginx 那里卡住了:

1

很显然就是因为证书私钥密码的缘故。在一番折腾后,终于解决了这个问题。

其实很简单,我们只需要导出一份不需要私钥密码的私钥文件就可以了。假设私钥文件为server.key,执行下面命令:

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

然后把server.key.unsecure的路径替换掉原来 nginx 配置文件里的证书路径:

ssl_certificate /etc/ssl/server.crt;
# 修改下面这一行指向我们生成的server.key.unsecure文件
ssl_certificate_key /etc/ssl/server.key.unsecure;

之后改变 nginx 的状态都不用输证书密码了。

« 返回