首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在applet中使用MSCAPI加载密钥库

如何在applet中使用MSCAPI加载密钥库
EN

Stack Overflow用户
提问于 2011-06-29 03:57:43
回答 1查看 2.7K关注 0票数 1

我有一个applet,它允许用户使用他们的个人证书对文档进行签名。小程序已经签名,但是当它试图加载它们的密钥库时,我得到了一个与sunMSCAPI相关的拒绝访问错误。它是由以下几行代码引起的:

代码语言:javascript
复制
store = KeyStore.getInstance("Windows-MY");
store.load(null, null);

根据我对applet签名的理解,在签名过程之后,我不需要跳过任何额外的步骤(编辑策略文件等)。我试着把所有的applet功能都包装在:

代码语言:javascript
复制
AccessController.doPrivileged(new PrivilegedAction() {
  public Object run() {
    etc...

但这并不管用。我在不同的论坛上找到了一些评论,说sunMSCAPI只在我得到的JDK 6...which中可用。我的想法快用完了,任何帮助都将不胜感激。

为了获得潜在的帮助,下面是访问被拒绝错误的堆栈跟踪:

代码语言:javascript
复制
java.security.AccessControlException: access denied (java.security.SecurityPermission authProvider.SunMSCAPI)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at sun.security.mscapi.KeyStore.engineLoad(KeyStore.java:736)
    at sun.security.mscapi.KeyStore$MY.engineLoad(KeyStore.java:43)
    at java.security.KeyStore.load(Unknown Source)
    at com.bloop.signature.PKCS11.loadKeyStore(PKCS11.java:42)
    at com.bloop.signature.PKCS11.sign(PKCS11.java:29)
    at com.bloop.signature.applet.SignApplet.signDocument(SignApplet.java:103)
    at com.bloop.signature.applet.SignApplet.access$200(SignApplet.java:19)
    at com.bloop.signature.applet.SignApplet$1.run(SignApplet.java:64)
    at java.lang.Thread.run(Unknown Source)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-30 02:26:22

我用来给小程序签名的密钥库似乎不知何故无效了。我生成了一个新的,用它签名,清除了java缓存,一切都开始正常工作。

为了完整起见,下面是我运行以生成新存储的命令:

代码语言:javascript
复制
keytool -genkey -alias keyPair -keyalg RSA -validity 500 -keystore myKeyStore -keypass <password> -storepass <password> -dname "<CN,OU,O,L,ST,C details>"

如果其他人遇到过这个问题,希望上面的文章能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6512373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档