我发现自己需要存储公钥证书,以及内部应用程序的单个私钥证书。
我们团队的一名成员建议将X509证书存储在数据库中,而不是将其存储在Windows证书存储中,就像我们一直在做的那样。我不喜欢重新发明轮子,但我必须至少考虑这个想法。这意味着保持我们的数据更集中,这是好的,我想。
我可以看到的最初障碍是:
我对X509证书没有太多经验,所以,我的问题是:在数据库中存储公钥证书时是否存在其他问题,而不是使用Windows证书存储?< / p>
值得注意的是,此应用程序将部署到多个业务客户端服务器上,因此将所有数据保存在一个位置将使备份更容易。哦,有问题的内部应用程序正在用C#开发..
谢谢!
答案 0 :(得分:3)
申请的目的是什么?
如果您正在处理应用程序中的所有加密,并且可以引用PKCS#12证书+私钥文件,那么转到数据库路径可能没问题。
如果您需要使用Windows Crypto API来访问证书,那么您可能希望继续使用内置证书存储。您可以在此获得一些优势,因为您可以保护外部设备上的私钥,如智能卡或硬件安全模块(HSM)。
如果要将所有内容存储在本地磁盘上,您需要确保为保护私钥而付出巨大努力。请务必使用强大的密码并使用最佳做法来保护应用中的密码短语。
答案 1 :(得分:1)
除非真的有必要,否则我不愿意将私钥移动到任何其他位置。如果密钥用于签名则不需要,只有在密钥用于解密时才需要密钥,并且您希望将密钥存档以备将来使用。即使在这种情况下,颁发证书的证书颁发机构通常也能够处理归档和恢复。对于诸如微软和委托等更受欢迎的CA来说,情况确实如此。
如果必须存储它,则使用AES和您可以在HSM(硬件安全模块)或智能卡中保护的密钥对其进行加密。不要将此密钥保留为纯文本(在文件或注册表中)。
您还希望在其生成位置和中央数据库之间保护此密钥。 SSL或VPN等
撤销列表由证书颁发机构在大多数环境中发布,通常发布到LDAP或目录或两者。