我正在尝试使用 Java Applet 在基于 Web 的应用程序中签署一些数据(POST 表单)。用户的 x509 证书将位于加密货币/智能卡中。签名需要采用附加的 pkcs#7 格式。
我使用本教程/代码作为构建小程序的起点 - http://www.developer.com/java/other/article.php/3587361/Java-Applet-for-Signing-with-a-Smart-卡片.htm
对我来说最大的问题似乎是小程序要求用户提供 pkcs#11 实现库的位置。这对我来说是一个很大的禁忌,因为我的典型用户不会知道他的 pkcs#11 库的位置。
从 Oracle 的 Java 文档 - http://docs.oracle.com/javase/6/docs/technotes/guides/security/p11guide.html看来,Java 没有自己的实现。
有没有办法在不向用户询问此位置的情况下进行此签名。我可以接受仅适用于 Windows 上的 IE 和 Firefox 的解决方案。
使用我使用的一些智能卡/加密货币,我注意到插入它的那一刻,我可以在 IE 和 Firefox 的个人证书选项卡中看到证书。这可能意味着加密令牌在您插入卡时向操作系统注册它包含的所有证书,并在您移除卡时取消注册它。因此,当它这样做时,它可能必须向操作系统/浏览器公开一些接口——这不能用于签名吗?