我也搜索了很多链接,例如oracle和velocity review以及 stackoverlow,但仍然没有成功。
重点很简单。Jar 使用以下方式签名:
keytool -genkey -alias signFiles -keystore compstore -keypass bca321 -dname "cn=test" -storepass abc123
jarsigner -keystore compstore -storepass abc123 -keypass bca321 -signedjar SignedJar.jar UnsignedJar.jar signFiles
它在本地机器上完美运行。但是当通过 HTTP(S) 像小程序一样使用 SignedJar.jar 时,即使用户接受证书(IE 或 FF 或 Chrome - 没有区别),它也会停止使用:
java.security.AccessControlException: access denied (javax.smartcardio.CardPermission Broadcom Corp Contacted SmartCard 0 connect)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at sun.security.smartcardio.TerminalImpl.connect(Unknown Source)
是的,它尝试从插入终端的智能卡中读取数据,并在调用连接时出现异常。
是的,我也尝试过这种方法:
AccessController.doPrivileged(new PrivilegedAction() {
...
但没有运气。那么问题在哪里呢?
在此先感谢,基里尔