准備工作當然是寫一個Applet其中涉及到對本地文件的讀或寫操作用於測試目的可以先予以執行想必應該是會拋出javasecurityAccessControlException的
下面實現簽名(代碼本身無須任何更改)
注下面所使用的keytool或jarsigner命令只存在與Java中中為javakey且二者的安全模型有很大的差異故務必首先確定你所使用SDK的版本
()使用keytool命令建立自己的密鑰庫並生成X自簽名證書
下列的命令很長時間都不使用了具體參數什麼的都忘完了故只給出大概的參數至於具體用法請參閱文檔
keytool genkey alias xiewuhen(這裡似乎應該是密鑰庫的項目)
下面按照提示一步步進行下去即可
()把Applet類文件打包成jar
()利用jarsigner簽名jar文件
jarsigner appletjar xiewuhen(這個appletjar是你要簽名的jar文件xiewuhen是你前面在密鑰庫中生成的項目)
()檢查jar文件在metainf目錄下應該會出現兩個新文件xiwehenSFxiwuhenDSA注意xiewuhen這個密鑰項目只是事例具體是什麼依賴你最初使用keytool所生成的項目其中SF文件是簽名文件是一個ASCII文件保 存了簽名過程中使用的摘要算法DSA文件是一個二進制文件保存了簽名和數字證書最後一點就是文件擴展名具體是DSA還是RSA取決你使用的簽名算 法默認是DSA可以在keytool參數中指定RSA算法
()若你是在單機且只有一個密鑰庫的機器上測試下一個步驟可以省略因為這牽涉到證書的導入導出的問題由於你簽名方和驗證方共用同一個密鑰庫那證書就無須導來導去了但為了模擬真正的環境所以還是建議在多機上測試或建立多個密鑰庫
()使用keytool export file alias等一系列參數將證書導出保存成crt格式可以在流覽器中配置該證書但我們暫不考慮這種情況再次使用keytool import file alias命令將證書導入驗證方的密鑰庫注意alias指定的別名務必和生成時的一模一樣
()修改策略文件該文件位於主目錄的/lib/security/中是javaseucrity文件至於你的Java主目錄是什麼可以查看javahome系統屬性
()如下修改策略
//指定的的密鑰庫路徑type目前只能是JKS(Sun的默認實現)可以省略
keystore keystoreURLkeystoreType; grant signedBy xiwuhen codeBase 這裡指定Applet的裝入URL若是文件URL須在前面加上file: 注意這裡務必不可省略否則Applet就會共享其他的策略了
{
permission javaioFilePermission autoexecbatread; //上面的權限只是一個例子依據你的要求給出具體策略
};
最後還有一點就是Applet可以有許多人順序簽名若是那樣的話signedBy中的各個簽名者之間是和的關系而不是或也就是說比如signedBy ab那必須兩人都簽了名名才行只有其一是不予通過的
關於證書的問題由於這裡我們使用的是自簽名證書所以只能用於測試目的在真正的商務活動中是不會有人信任這種證書的(想必你也不會信任來路不明的證 書)要想真正用於實際須向證書機構(CA)申請並購買數字證書類似機構大的主要有VerisignThawte等
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26385.html