1. 程式人生 > >java applet數字簽名以及取消瀏覽器警告提示

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控制檯中可以檢視到這個證書 
 安全 -- 管理證書