证书管理的最佳实践

时间:2014-03-26 13:45:09

标签: c# asp.net security x509certificate

我有一个ASP.NET MVC应用程序,其中每个用户都有自己的A1证书(通常是来自CA的受密码保护的pfx文件),用于在服务器端签署一些文档。

我看到的两个选项是将pfx文件存储在服务器中并每次将密码保存到C#X509Certificate2类中,或者将证书导入Windows Storage并使用C#X509Store等序列号访问证书。这两者有利有弊(安全,维护,表现)。

任何人都有这方面的专业知识,可以分享一些提示吗?

P.S。:很抱歉问题的一般格式。

1 个答案:

答案 0 :(得分:1)

  

任何人都有这方面的专业知识,可以分享一些提示吗?

好吧,跳出来的东西是在服务器上存储PFX / PKCS#12证书和带有密码的私钥。它有点破坏了一些安全属性,并且可能会对可以提供不可否认性的东西提供拒绝。

  

我看到的两个选项是将pfx文件存储在服务器中并保存密码......

我相信还有第三个。用户从服务器下载文档;然后用户签署文件;最后,用户将分离的签名上传到服务器。我认为这是惯常的工作流程。

我偶尔看到的另一个坏主意是让服务器发送文档的哈希值,然后用户在不知道他或她签名的情况下签名。用户应该总是自己计算哈希值。 Schneier甚至建议用户稍微修改文档,以确保其不受攻击者控制并容易发生冲突。


  

...每次导入C#X509Certificate2类或将证书导入Windows Storage并使用C#X509Store等序列号访问证书。

这是一个设计细节。我不相信有足够的信息可以发表任何有用的评论。


  

证书管理的最佳实践

证书的好处是它们是公开的,而且不敏感。所以围绕它们并没有很多练习。但是,使用证书的PKI是一个不同的故事。

选择散列和模数以满足您未来的需求,例如SHA256和3072位RSA模数。

短期证书(30天左右)推广小型CRL,这对某些客户(检查撤销的人)有利。 OCSP更好,OCSP装订更好。

如果证书经常轮换,可以重新验证相同的公钥,因为密钥连续性似乎比密钥轮换更有用或更有用。