我们最近为我们的域名购买了通配符SSL证书。 我们将所有的证书都转换成Java密钥库,但现在我们正在问自己应该在哪里存储这些证书以备后用。
人们使用像BitBucket这样的源代码控制来处理这些types的文件,或者只是在每次需要的时候生成,或者其他的东西?
我们想知道是否有一个标准的解决scheme或任何有关存储这些证书以供将来使用的“最佳实践”。
有多种解决scheme:
一个途径是特定的密钥库,基于硬件的设备, 硬件安全模块或基于软件的等价物。
另一种方法是在情况出现时简单地撤销旧密钥并生成一个新的私钥/公钥对。 这将问题从维护密钥安全转移到保护证书提供者帐户的用户名/密码及其重新发布的过程。 这样做的好处是,大多数组织已经拥有一个特权帐户pipe理解决scheme,例如1 2
有多种离线存储方式,从打印包含密码的私钥和公钥对(包括密码恢复的母狗)的硬拷贝到简单地存储在数字媒体上。
真的不好的地方是GitHub,你的团队WiKi或networking共享(你会明白)。
更新2015/4/29: Keywhiz也是一个有趣的方法。
不,SSL证书不在源代码控制中,至less不是私钥部分。
像对待你的密码一样对待他们。 实际上,我们的密码与KeePass完全一样。 它允许你附加文件,并被encryption。
如果您将私钥放在源代码pipe理中,任何有权访问的人都可以模拟您的服务器。 如果您的networking服务器没有使用PFS(完美的前向保密),那么也可以使用Wireshark等常用的开源工具来解密任何捕获的SSLstream量。
您可以使用DES或AES保护密钥,使用OpenSSL使用密码进行encryption。 OpenSSL适用于Linux,OSX和Windows。
当密码不方便时(例如,在一个自动启动但不支持自动input密码的networking服务器上),OpenSSL也可以删除密码。
使用AESencryption(比DES更安全)添encryption码短语: –
openssl rsa -aes256 -in private.key -out encrypted.private.key
删除密码(您将被提示input密码): –
openssl rsa -in encrypted.private.key -out decrypted.private.key
我build议查看脱机HSM(如硬件encryption令牌或CAC)来存储私钥和证书。 这不仅保护私钥免受意外的危害,还提供了一些基本的encryption卸载。
如果您需要pipe理更多的encryption资产,我build议您查看企业密钥和证书pipe理软件,该软件可以自动进行续订,跟踪生命周期,自动提供端点等。这些软件大多数将资产存储为CLOB在数据库中。
读完KeyWhiz后,另一种select是HashiCorp的保险库。 它不仅仅是一个密码pipe理员,而是一个秘密商店,我相信有点类似于KeyWhiz。 它用GO编写,客户端也作为服务器,并且钩入一堆后端和authentication方法。 保险柜也是开放源代码的,也有企业选项。
由于SSL密钥和证书只是文本文件,您可以对它们进行base64编码,并将其保存为Vault中的string,甚至保存为Vault中的文本。 没有一个WebUI或GUI,它的所有命令行或脚本驱动,并有一个非常好,稳定的Web API来引导。