我希望Web应用程序使用智能卡内部的私钥对xml文档进行签名。如果可以通过某种方式将私钥发送到服务器,则可以通过 java.security 访问Windows证书存储区并通过 javax.xml.crypto 进行转换,从而在Java中对其进行签名。 xml文档转换为xml签名标准,但是私钥无法从智能卡中导出。
尽管我可以使用Java Applets或创建在客户端计算机上运行的Java应用程序(使用Java Web Start),但首先,我还是希望用户不必安装浏览器插件Java。或计算机上的任何Java应用程序,其次,不推荐使用Java Applets和Java Web Start。 Oracle告诉人们寻找其他解决方案。
最明显的选择是使用JavaScript,但它要么需要访问私钥(由于无法从智能卡导出私钥,所以我们没有此权限),或者它需要附加软件才能安装浏览器以便与智能卡读卡器进行通信(带有某种本机代码)。
我有Java代码,该代码允许我通过访问Windows证书存储区并利用几种抽象方式对其进行签名,从而使用智能卡的私钥对xml文档进行签名。现在,我倾向于让用户安装一个允许客户端计算机运行该代码的插件,但是我宁愿使用JavaScript,这样用户也不必安装任何东西。
所以我的问题是:我是否仍然有使用JavaScript使用智能卡的私钥对xml文档签名的方法?还有其他方法可以使我不必在客户端计算机上安装其他软件吗?