如何产生签名applet,以使applet能够访问本地资源?
在jdk1.1中,可以使用javakey命令来产生公钥,私钥,证书和签名的jar文件,详细资料请参考: http://java.sun.com/security/usingJavakey.html而java 2对签名机制做了比较大的改进,允许用户更灵活地设置安全权限.Java 2提供了三个工具:keytool,policytool和jarsigner来实现签名applet.例如,Joe编写了一个签名applet:SignedApplet.java,那么产生一个简单的签名applet的过程如下:
//产生密钥,密钥别名为joe,口令为sign12,存放在密钥库joestore中
keytool -genkey -alias joe -keypass sign12 -keystore joestore
//将SignedApplet.class及相关文件打包成jar文件
jar cvf SignedAppletDemo.jar
//利用keytool生成的自签名的证书产生签名applet(jar文件)
jarsigner -keystore joestore -signedjar joe.jar SignedAppletDemo.jar joe
//将自签名证书从keystore中输出到文件
keytool -export -keystore joestore -alias joe -file joe.cer
而对于签名applet的接受方Susan,需要通过如下步骤来安全地执行
Joe编写的签名applet:
//得到Joe的证书并将之读入到密钥库中susanstore中
keytool -import -alias joe -file joe.cer -keystore susanstore
//运行policytool产生满足Susan要求的policy文件
policytool
//用appletviewer运行之,或在浏览器中安装java plugin来运行之.
关于签名applet在Java Plugin中的部署请参考以下网页:
http://java.sun.com/security/signExample12/
注:以上的例子为简单起见,使用了keytool产生的自签名证书.其实,用户也可以
使用keytool -certreq向商业CA中心申请电子证书.