centos7 systemctl 启动 nginx 时不请求 pem 的 passphrase?

2015-06-26 10:40:08 +08:00
 LukeXuan
Jun 25 22:32:17 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jun 25 22:32:17 nginx[32654]: Enter PEM pass phrase:
Jun 25 22:32:17 nginx[32654]: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/ssl/certs/xxx.ke...M lib)
Jun 25 22:32:17 nginx[32654]: nginx: configuration file /etc/nginx/nginx.conf test failed
Jun 25 22:32:17 systemd[1]: nginx.service: control process exited, code=exited status=1
Jun 25 22:32:17 systemd[1]: Failed to start The nginx HTTP and reverse proxy server.
Jun 25 22:32:17 systemd[1]: Unit nginx.service entered failed state.

求解决方案!

3748 次点击
所在节点    NGINX
6 条回复
lilydjwg
2015-06-26 10:58:58 +08:00
为什么要设置 passphrase 呢?你打算在它每次重启的时候登录过去输密码?
ryd994
2015-06-26 11:22:18 +08:00
服务器私钥加密码并卵
要是真能黑到私钥文件,黑不到配置文件?
私钥密码就是只是给人用的
msg7086
2015-06-26 11:24:41 +08:00
@lilydjwg 这是怕nginx突然有一天叛变了带着楼主的私钥私奔了,所以果断套上×××以防××。
LukeXuan
2015-06-26 12:08:38 +08:00
@msg7086
@ryd994
@lilydjwg
黑到配置文件也没用吧 我又没在配置文件里写明
问题是centos6时代用的service就可以正常地向我请求passphrase 为什么systemctl就不行了呢
ryd994
2015-06-26 12:13:41 +08:00
@LukeXuan 你想的太简单了
黑进你的服务器还有什么干不了?
装个钩子或者替换systemctl,然后等你重启服务就行了
lilydjwg
2015-06-26 12:50:41 +08:00
@LukeXuan 因为 systemd 不是 initscripts 呗。systemctl 是通过 D-Bus 告诉 systemd 要启动那个服务的,服务进程和你执行命令的终端没有关系。

网上有个补丁,但是没有被接受: http://mailman.nginx.org/pipermail/nginx/2014-April/043281.html

如上边那些邮件里说的,这样根本防不了被黑,除非黑你的人懒或者根本不懂;它只会给你「更安全」的错觉。因为即使你是人工登陆上去输入密码的,nginx 会去解密私钥并保存在内存中。攻击者只要去 nginx 内存里找就可以了。既然能拿到你的加密过的私钥,那么说明攻击者有 root 权限。既然TA有 root 权限,那么取得进程的内存完全没问题。

你还记得 heartbleed 吗?不过是泄漏了一点点 nginx 的内存,也有人成功地取得了私钥: https://blog.cloudflare.com/the-results-of-the-cloudflare-challenge/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/201315

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX