我的具体用例是,我必须访问存储在客户端上的数字证书,并使用它们在客户端和服务器端执行签名、验证、加密和解密的任务。对于后一部分,解决方案有很多很多。症结在于访问客户端上存储的证书的能力。
请注意,我说的是“存储在客户端上的证书”,这是故意含糊其辞的。我不想将想法限制在系统存储、用户存储、浏览器存储、加密令牌、Java 密钥存储等任何地方。
多年来,我采用了以下方法。除了它们之外,我还给出了它们的优点和缺点。
- CAPICOM/ActiveX。虽然这是最容易使用的,但它限制用户只能使用 Windows 上的 IE。更糟糕的是,它现在已被弃用,并且只能在 32 位上运行。
- Java 小程序。这是跨平台和跨浏览器的,但是浏览器中的 java 并不像人们希望的那样常见,而且正在迅速消失(显然 Apple 最近删除了它)。因此,让用户下载并安装 JRE 会带来额外的麻烦。此外,用户必须执行相对技术性的任务,为签名者设置无限强度的加密扩展才能工作。
我听说过/想到过但还没有取得多大进展的事情
- 大多数 JavaScript 解决方案。他们实现了 RSA 算法,但没有办法访问客户端证书存储上的数字证书。他们中的大多数都会生成一个新的密钥对。
- 闪光/柔性。 Flash/flex 似乎是最普遍的客户端技术。他们已经可以访问摄像头和麦克风等客户端硬件。如果他们能够访问证书存储,那就太好了。
- 微软网站上给出的 CAPICOM 替代方案。它规定了 CAPICOM 的替代方案,这些方案主要使用 .NET 框架来做事情。这对于桌面客户端来说非常有用。但是对于“脚本”,他们在“重要说明”中非常明确地说,您必须编写自己的 ActiveX 控件。这让我们回到了第一个方面。
我正在寻找一种方法来克服/解决访问客户端上的证书存储的主要问题。我并不是在寻找有关 RSA 算法的讨论,或者为什么 PKI 很愚蠢,也不是非对称加密的替代方案,也不是使用 Web 应用程序或 Apple 以外的架构。
我最好的选择仍然是小程序,因为这可能是跨平台性最强的东西。
或者,我可以开发自己的 activeX 并限制我的范围。
请记住,客户端证书访问是一个重要的安全问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)