java applet數字簽名以及取消瀏覽器警告提示

使用applet讀取客戶端的IC卡,轉載文章然後自己整合了一下,方便以後查閱
一、壓縮你的class類文件爲jar包
1.假設你的需要壓縮的類文件存在的包爲:cn.mbq.test1和cn.mbq.test2
2.進入你的classes目錄(這裏是在MyEclipse平臺裏建一個web項目,類編譯後的文件是存放在classes文件夾裏的),在DOS窗口中執行命令:jar cf mytest.jar cn.mbq.test1 cn.mbq.test2
這一步其實可以使用MyEclipse來打成jar包,只選擇需要的那些類就可以了。

3.執行命令後你會在當前目錄中找到mytest.jar文件,這個就是剛纔生成的檔案文件。你可以修改它的後綴爲rar,然後使用winrar壓縮程序打開它查看看是否正確。
(說明:正確的方法應該是 jar cf mytest.jar cn/mbq/test1 cn/mbq/test2 )

二、使用keytool工具生成密匙庫
1.keytool工具位於${java_home}/bin目錄下;
2.在DOS窗口中執行命令:keytool -genkey -keystore mytest.store -alias mbq
注意:mytest.store 是你的密匙庫的名稱,可以隨意修改,後綴請不要修改!
如果需要可以添加參數DOS命令
keytool -genkey -keystore mytest.store -alias mbq -validity 3650

-validity 3650 表示的是有效期是3650天,默認情況是六個月有效期。
mbq 爲別名,這個也可以改成自己的名稱
3.執行上述命令後,DOS窗口中會提示你輸入keystore的密碼、你的姓名、組織單位等等信息。這裏要注意的是輸入密碼請記住,後面要用到的。在最後,我們輸入y確認信息。然後再直接回車設置mbq的主密碼和store密碼一致即可!


三、使用keytool工具導出簽名時用到的證書
1.在DOS窗口中執行命令:keytool -export -keystore mytest.store -alias mbq -file mbq.cert
注意:mytest.store 就是第二步生成的密匙庫名稱
mbq 也是在第二步中我們指定的別名
mbq.cert 爲我們生成的證書的名稱,可以自己修改名稱,注意後綴不要改
2.命令執行成功,我們會在當前目錄下找到一個mbq.cert文件,這個就是我們剛纔生成的證書。


四、使用jarsigner工具簽名jar壓縮文檔
1.jarsigner工具位於${java_home}/bin目錄下;
2.在當前DOS窗口中執行命令:jarsigner -keystore mytest.store mytest.jar mbq
注意:mytest.store 就是我們在第二步中生成的密匙庫名稱
mytest.jar 就是我們這第一步壓縮的jar文檔
mbq 是提供者的名稱,我們這裏設置爲我們的別名
修改客戶端的程序是需要重新打包和簽名。

五、創建mytest.policy文件
1.在當前目錄下創建一個mytest.policy文件,其內容如下:
keystore"file:mytest.store","JKS";
grant signedBy"mbq"
{
 permission java.io.FilePermission"<<ALLFILES>>","read";
 permission java.net.SocketPermission "localhost:100","connect,resolve"; 
};
2.在%JAVA_HOME%/jre/lib/security/java.security 中
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy後加上
file:${path }/mytest.policy   path是mytest.policy的路徑如:file:h:/apache-tomcat-6.0.41/webapps/storageCar/view/forkliftLogin/mytest.policy


 在jsp使用
<APPLET name="obj_applet"  code="RfidApplet" CODEBASE="."
        archive="ReadRFID.jar,java+socket++tcp_ip+sdk.jar,commons-codec-1.7.jar"
          WIDTH=0 HEIGHT=0 >
   <param  name="ip1"  value="${ip1}">
   <param  name="port1"  value="${port1 }">
 </APPLET>  
但是瀏覽器提示阻止運行,解決辦法 打開控制面板 -->  java  -->  安全 -- 編輯站點列表,加入applet使用的url,保存後重啓瀏覽器
js調用方法
 var result= document.obj_applet.classMethod();

查了一些資料說使用object標籤會自動在客戶端下載jre,用${java_home}/bin/HtmlConverter下的工具自動把applet標籤轉爲object標籤,但是我沒找到不知道是jdk8取消了還是咋滴。
現在能在jsp中運行了,但是瀏覽器會彈出警告解決辦法
六. 找到jre所在的路徑,進入${JAVA_HOME}/jre/lib/security目錄下


七. 將生成的cert證書複製到${JAVA_HOME}/jre/lib/security目錄下
八. 在${JAVA_HOME}/jre/lib/security目錄下執行
 keytool -import -alias hp -keystore cacerts -file hp.cer
 執行這個命令時,會提示輸入密碼,這個密碼是cacerts文件的默認密碼:changeit
 
九. 在Java控制檯中可以查看到這個證書 
 安全 -- 管理證書

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章