今天,我要问一些比平时更不涉及技术性的问题。事实上,这或多或少是一个反问句,但我很想阅读你对这个话题的建议。
在我的日常工作中,我必须处理大量的 Web 服务器以及 SSL 证书。在这份工作中,我还必须处理安全问题,如果你想在安全和浪费时间之间取得良好的平衡,这并不容易。
那么,问题是:
您是否有一种方法可以重新启动 NGinx/Apache/etc Web 服务器,而无需操作员在控制台前输入证书的密码?
我的意思是,我有一个解决方案,即纯粹删除密码来实现自动化过程,但这听起来有点令人毛骨悚然,特别是如果我的服务器受到威胁(在运行状态下,所有数据都被加密),人们将能够在没有任何密码保护的情况下检索和使用证书。
附加信息:除了发行版提供的原始脚本外,我无法使用其他脚本来启动服务。我们主要使用 NGINX 网络服务器来处理前端请求和 SSL。我们不想使用 Varnish 或任何其他 SSL 优化器。
答案1
除了使用以下方法从私钥中删除密码外:
openssl rsa -in server.key.org -out server.key
您可以使用SSLPassPhraseDialog
指示:
SSLPassPhraseDialog exec:/usr/local/apache/sbin/pp-filter
目的是这个外部程序首先运行安全检查,以确保系统不会被攻击者入侵,并且只有当这些检查成功通过后,它才会提供密码短语
但您必须提供这些安全检查来确定系统是否已被入侵。在我看来,这并不比从密钥中删除密码更安全。
如果您的系统受到威胁并且攻击者获得了 root 权限,那么密码脚本也可以被更改。
因此,要么使用密码来提高安全性,要么方便重启。
答案2
我可以向您推荐 IBM HTTP Server,他们使用 kdb 和存储密码来完成此任务。=) 缺点是此 IHS 未启用 SNI。因此,您将需要大量公共 IP 地址或 SAN 证书。