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控制台中可以查看到这个证书 
 安全 -- 管理证书

猜你喜欢

转载自blog.csdn.net/a1053646895/article/details/49446551