Answers:
有多种解决方案:
一种途径是特定的密钥库,它是基于硬件的设备,硬件安全模块或基于软件的等效物。
另一种方法是简单地撤销旧密钥,并在情况出现时生成一个新的私钥/公钥对。这在某种程度上将问题从维护密钥安全性转移到了使用证书提供者及其重新发行程序来保护帐户的用户名/密码。这样做的好处是,大多数组织已经拥有特权帐户管理解决方案,例如1 2
离线存储有多种方法,从打印包括密码的私人和公共密钥对的硬拷贝(但将恢复为母狗)到简单地将其存储在可长期存储的数字媒体上。
真正糟糕的地方是GitHub,您的团队WiKi或网络共享(您会想到)。
如果将私钥放在源代码管理中,则有权访问它的任何人都可以模拟您的服务器。如果您的网络服务器未使用PFS(完美的前向保密性),那么也可以使用Wireshark等常用的开放源代码工具解密捕获的SSL流量。
您可以通过DES或AES使用OpenSSL使用密码短语对密钥进行加密来保护密钥。OpenSSL适用于Linux,OSX和Windows。
如果密码短语不方便(例如,在自动启动但不支持密码短语自动输入的Web服务器上),OpenSSL也可以删除该密码短语。
使用AES加密(比DES更安全)添加密码:
openssl rsa -aes256 -in private.key -out encrypted.private.key
删除密码(系统会提示您输入密码):-
openssl rsa -in encrypted.private.key -out decrypted.private.key
阅读有关KeyWhiz的另一个选择是HashiCorp的Vault。我相信它不仅是一个密码管理器,还是一个Secrets商店,我认为它有点类似于KeyWhiz。它使用GO编写,并且客户端也充当服务器,并且挂接到一堆后端和身份验证方法中。保险柜也是开源的,还具有“企业”选项。
由于SSL密钥和证书只是文本文件,因此您可以对它们进行base64编码,然后将其另存为Vault中的字符串,甚至也保存为Vault中的文本。没有WebUI或GUI,也不是所有命令行或脚本驱动的,并且具有非常好的,稳定的Web API可以启动。