2008-10-06 34 views
3

我发现自己需要存储公共密钥证书,以及一个私人密钥证书用于内部应用程序。在DB中存储X509证书 - 是或否?

我们团队的一位成员建议将X509证书存储在数据库中,而不是将其存储在Windows证书存储区中,就像我们以前一直在做的那样。我不喜欢重新发明轮子,但我必须至少考虑这个想法。这意味着保持我们的数据更集中,这是好的,我想。

,我可以看到最初的障碍是:

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

我没有很多与X509证书的经验,所以,我的问题是:是否有任何其他的问题,我们很可能会遇到存储公钥证书在数据库中,而不是与Windows证书去商店?

值得注意的是,该应用程序将推出到多个业务客户端服务器上,因此将所有数据保存在一个位置将使备份更加容易。哦,并且正在讨论的内部应用程序正在用C#开发。

谢谢!

回答

3

你的应用程序的目的是什么?

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

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

如果您要在本地磁盘上存储所有内容,您需要确保您经过大量努力来保护私钥。请务必使用强大的密码并使用最佳做法来保护您的应用中的此密码。

1

我不愿意将私钥移到任何其他位置,除非真的有必要。如果密钥用于签名,则不需要,只有在密钥用于解密时才需要,并且您希望将其存档以备将来使用。即使在这种情况下,颁发证书的证书颁发机构通常也能够处理存档和恢复。对于更受欢迎的CA(例如Microsoft和委托人)来说,情况确实如此。

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

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

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