2011-06-28 12 views
1

ユーザーが個人証明書を使用して文書に署名できるアプレットがあります。アプレットはすでに署名されていますが、キーストアをロードしようとすると、sunMSCAPIに関連するアクセス拒否エラーが発生します。これは、次のコード行によって引き起こされます:私は、アプレットの署名を理解して何からアプレット内でMSCAPIを使用してキーストアをロードする方法

store = KeyStore.getInstance("Windows-MY"); 
store.load(null, null); 

、私は(編集ポリシーファイルなど)を介してジャンプする必要が署名プロセスの後には、追加の手順はありません。私はすべてのアプレット機能を以下の範囲内でラップしようとしました:

AccessController.doPrivileged(new PrivilegedAction() { 
    public Object run() { 
    etc... 

しかし、それは助けになりませんでした。私は、sunMSCAPIがJDK 6でのみ利用可能であるという様々なフォーラムでいくつかのコメントを見つけました...私は持っています。私はアイデアがなくなり、どんな助けもありがたいです。潜在的な援助のために

は、ここにアクセス拒否エラーのスタックトレースです:

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) 

答えて

1

私がアプレットに署名するために使用したキーストアが何らかの形で無効だったようです。私は新しいものを生成し、署名してjavaキャッシュをクリアし、すべてがうまく動作するようになりました。誰が今までこの問題を持っている場合

keytool -genkey -alias keyPair -keyalg RSA -validity 500 -keystore myKeyStore -keypass <password> -storepass <password> -dname "<CN,OU,O,L,ST,C details>" 

が、うまくいけば、上記のことができます:

は完全酒のために、ここで私は新しい店を発生させるために走ったコマンドです。

関連する問題