3

我发现自己需要存储公钥证书和内部应用程序的单个私钥证书。

我们团队的一位成员建议将 X509 证书存储在数据库中,而不是像我们迄今为止所做的那样将其存储在 Windows 证书存储中。我不喜欢重新发明轮子,但我至少必须考虑这个想法。这意味着让我们的数据更加集中,这很好,我想。

我能看到的最初的障碍是:

  • 私钥仍然需要存储在某个地方,我不知道将它硬塞到“公钥”表中是否是个好主意。我也不喜欢为单个元素设置表格的想法。也许只是将私钥保存为本地文件?(例如 .pfx 文件)。
  • 吊销清单。我们可能必须建立一个流程来处理被撤销的公钥。

我对 X509 证书没有太多经验,所以,我的问题是:在数据库中存储公钥证书而不是使用 Windows 证书存储库时,我们可能会遇到其他问题吗?

值得牢记的是,该应用程序将部署到多个业务客户端服务器上,因此将所有数据保存在一个地方将使备份更容易。哦,有问题的内部应用程序是用 C# 开发的。

谢谢!

4

2 回答 2

3

你申请的目的是什么?

如果您正在处理应用程序中的所有加密,并且可以引用 PKCS#12 证书 + 私钥文件,那么使用数据库路由可能没问题。

如果您需要使用 Windows Crypto API 来访问证书,那么您可能希望继续使用内置证书存储。您可以在这里获得一些优势,因为您可以保护外部设备上的私钥,例如智能卡或硬件安全模块 (HSM)。

如果您将所有内容存储在本地磁盘上,您将需要确保您付出了巨大的努力来保护私钥。请务必使用强密码并使用最佳实践来保护您的应用程序中的此密码。

于 2008-10-08T19:56:36.630 回答
1

除非真的有必要,否则我不愿意将私钥移动到任何其他位置。如果密钥用于签名,则不需要它,并且仅当密钥用于解密并且您希望将其存档以备将来使用时才需要。即使在这种情况下,颁发证书的证书颁发机构通常也能够处理存档和恢复。对于 Microsoft 和 entrust 等更受欢迎的 CA 而言,情况当然如此。

如果您必须存储它,请使用 AES 和您能够在 HSM(硬件安全模块)或智能卡中保护的密钥对其进行加密。不要将此键保留为纯文本(在文件或注册表中)。

您还希望在其生成位置和中央数据库之间的传输过程中保护此密钥。SSL 或 VPN 等

在大多数环境中,撤销列表由证书颁发机构发布,通常发布到 LDAP 或目录或两者。

于 2008-10-16T14:01:53.600 回答