2011-06-28 23 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

看來,我是用對Applet簽名密鑰庫是無效的莫名其妙。我生成了一個新的,簽名的,清除了java緩存,並且一切都開始正常工作。

爲了完整起見,這裏是我跑,生成新的存儲命令:

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

如果任何人有過這個問題,希望上面的幫助。

相關問題