我的特殊用例是我必须访问存储在客户端上的数字证书,并使用它们在客户端和服务器端执行签名,验证,加密和解密任务。对于后一部分,有许多解决方案。关键点是能够访问存储在客户端上的证书。
请注意,我说的是“存储在客户端的证书”,这是故意模糊的。我不想把想法限制在系统商店,用户商店,浏览器商店,加密令牌,java密钥库,无论如何。
多年来,我使用了以下方法。除了他们每个人,我给出了利弊。
我听到/想到的事情,但我没有取得进展
我正在寻找的是一种克服在客户端访问证书存储的主要问题的方法。我不是在寻找有关RSA算法的讨论,也不是为什么PKI是愚蠢的,或者是非对称加密或使用除Web应用程序之外的架构或Apple上的替代方案。
答案 0 :(得分:2)
我最好的选择仍然是applet,因为这可能是最跨平台的事情。 或者,我可以开发自己的activeX并限制我的范围。
请记住,客户端证书访问是一件很安全的事情。
答案 1 :(得分:0)
我们的SecureBlackbox库有一个分布式加密附件,可以满足您的需求。目前,客户端模块进行签名,但可以由用户进行扩展(我们提供完整的源代码)。您可以在on our site或this SO answer中找到加载项的详细说明。
答案 2 :(得分:-1)
[披露:我为CoSign工作]
将证书存储在客户端上的安全替代方法是将它们存储在安全的集中式SSCD(安全签名创建设备)上。本地证书(智能卡等)的问题是在客户端/服务器或基于Web的应用程序中安全地使用它们。
集中式SSCD非常巧妙地处理这个问题。用户仍然需要验证自己到SSCD,但SSCD本身持有证书并进行签名。 身份验证步骤可以包括双因素身份验证,包括一次性密码(OTP),生物识别等。我们让客户完成所有这些工作。
我们的想法是进行安全的客户端身份验证,但将安全签名集中作为网络上的服务。
见description。也可作为基于云的解决方案。
ps,这个答案涵盖了如何安全登录基于Web的应用程序的更一般的问题。我同意它不包括使用用户的智能卡或客户端替代方案签署的具体问题(OP故意模糊)。