公司通常将 SSL 证书存储在哪里以供将来使用?

公司通常将 SSL 证书存储在哪里以供将来使用?

我们最近为我们的域名购买了通配符 SSL 证书。我们将所有证书都转换为 Java 密钥库,但现在我们想知道应该将它们存储在哪里以供日后使用。

人们是否使用像 BitBucket 这样的源代码控制来处理这些类型的文件,或者只是在每次需要时生成,或者其他什么?

我们想知道是否存在标准解决方案或任何“最佳实践”来存储这些证书以供将来使用。

答案1

有多种解决方案:

一种方法是使用特定的密钥保管库,可以是硬件设备,也可以是硬件安全模块或基于软件的等效物。

另一种方法是,当情况出现时,简单地撤销旧密钥并生成新的私钥/公钥对。这在某种程度上将问题从维护密钥安全转移到保护证书提供商的帐户用户名/密码及其重新颁发程序。这样做的好处是,大多数组织已经拥有特权帐户管理解决方案,例如1 2

离线存储有多种方式,从打印包含密码的私钥和公钥对的硬拷贝(但那将是一只母狗来恢复)到简单地将它们存储在适合长期存储的数字媒体上。

真正糟糕的地方是 GitHub、你的团队 WiKi 或网络共享(你明白我的意思)。

更新2015/4/29: 基维兹似乎也是一个有趣的方法。

答案2

不,SSL 证书不会进入源代码控制,至少私钥部分不会。

像对待密码一样对待它们。我们的存储方式与密码完全相同 - 在 KeePass 中。它允许您附加文件,并且是加密的。

答案3

如果您将私钥放入源代码控制中,任何有权访问它的人都可以冒充您的服务器。如果您的网络服务器未使用 PFS(完美前向保密),那么也可以使用 Wireshark 等常用开源工具解密任何捕获的 SSL 流量。

您可以使用 OpenSSL 通过 DES 或 AES 加密密钥来保护密钥,并使用密码进行加密。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

答案4

在阅读了 KeyWhiz 的相关内容后,另一个选择是 HashiCorp 的 Vault。它不仅仅是一个密码管理器,还是一个 Secrets 存储,我认为它与 KeyWhiz 有些相似。它是用 GO 编写的,客户端也可以用作服务器,并连接到一堆后端和身份验证方法。Vault 也是开源的,也有企业版选项。

由于 SSL 密钥和证书只是文本文件,因此您可以对它们进行 base64 编码,并将其保存为 Vault 中的字符串,或者甚至只是 Vault 中的文本。它没有 WebUI 或 GUI,全部由命令行或脚本驱动,并且具有非常好的、稳定的 Web API。

  1. https://www.vaultproject.io/
  2. https://github.com/hashicorp/vault

相关内容