C# 证书管理的最佳做法

C# 证书管理的最佳做法,c#,asp.net,security,x509certificate,C#,Asp.net,Security,X509certificate,我有一个ASP.NET MVC应用程序,其中每个用户都有自己的A1证书(通常是来自CA的受密码保护的pfx文件),用于登录服务器端的一些文档 我看到的两个选项是将pfx文件存储在服务器中并保存密码以便每次导入C#X509Certificate2类,或者将证书导入Windows存储并使用C#X509Store和其他工具通过序列号访问证书。两者各有利弊(安全性、维护、性能) 任何人都有这种情况的专业知识,可以分享一些技巧吗 附言:对不起,问题的一般形式 任何人都有这种情况的专业知识,可以分享一些技巧

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

我看到的两个选项是将pfx文件存储在服务器中并保存密码以便每次导入C#X509Certificate2类,或者将证书导入Windows存储并使用C#X509Store和其他工具通过序列号访问证书。两者各有利弊(安全性、维护、性能)

任何人都有这种情况的专业知识,可以分享一些技巧吗

附言:对不起,问题的一般形式

任何人都有这种情况的专业知识,可以分享一些技巧吗

我突然想到的是在服务器上存储带有密码的PFX/PKCS#12证书和私钥。它破坏了一些安全属性,并且可能提供了一些假定提供不可否认性的东西的可否认性

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

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

我有时看到的另一个坏主意是让服务器发送文档的散列,然后用户在不知道自己签名的情况下对文档进行签名。用户应始终自己计算哈希值。Schneier甚至建议用户稍微修改文档,以确保其不受攻击者的控制,并且容易发生冲突


。。。每次导入C#X509Certificate2类,或将证书导入Windows存储,并使用C#X509Store和其他工具按序列号访问证书

这是一个设计细节。我认为没有足够的信息来发表任何有用的评论


证书管理的最佳做法

证书的酷之处在于它们是公开的,而且不敏感。所以他们周围没有太多的练习。不过,证书所使用的PKI是另一回事

选择一个哈希和模数以满足您未来的需要,如SHA256和3072位RSA模数

短期证书(30天左右)促进小型CRL,这对某些客户机(检查撤销的客户机)有利。OCSP更好,OCSP吻合器更好

如果证书频繁轮换,则可以重新认证相同的公钥,因为密钥连续性似乎比密钥轮换更理想或有用