"这篇文章主要介绍了如何给Java的jar包进行数字签名,以便让Applet或Java Web Start程序能访问客户端的本地资源。签名过程包括使用keytool生成.store文件,然后用jarsigner对jar包进行签名。此外,还提到了applet应用程序的数字签名实战,包括如何将class文件打包成jar并签名,以便实现applet对客户端资源的访问。"
在Java开发中,jar包签名是一个关键的安全措施,特别是对于那些需要在客户端运行并需要一定权限的代码,如Applet和Java Web Start(JWS)程序。签名的目的是确保代码的来源可信,并且允许用户在运行前了解代码的权限需求。以下是详细的签名过程:
1. **创建Keystore**:
使用Java自带的keytool工具生成一个包含私钥的keystore文件。在DOS命令行中,可以创建一个名为`xxx.keystore`的文件,例如:
```
keytool -genkey -keystore xxx.keystore -alias xxx -validity 3650
```
其中,`-alias`指定别名,`-validity`定义证书的有效期,例如3650天表示10年。
2. **签名jar包**:
使用jarsigner工具对已经打包好的jar文件进行签名,指定keystore和别名,例如:
```
jarsigner -keystore xxx.keystore helloworld.jar xxx
```
这里,`helloworld.jar`是你要签名的jar文件。
签名完成后,用户在运行Applet或JWS程序时,系统会检查签名,如果签名有效,会提示用户是否允许程序访问本地资源。对于Applet,数字签名使得它们可以在Java沙箱之外运行,从而能够执行更多的操作,如读写文件或网络通信。
在applet的应用实战中,将class文件打包成jar是必要的步骤。使用jar命令可以完成此操作,例如:
```
jar cf mytest.jar cn.mbq.test1 cn.mbq.test2
```
这会将`cn.mbq.test1`和`cn.mbq.test2`包下的所有类文件打包到`mytest.jar`中。
总结来说,jar包签名对于提高Java应用程序的安全性和用户信任度至关重要。通过签名,开发者可以确保代码的完整性和来源,同时允许用户对即将运行的代码有充分的了解。在实际开发中,尤其对于需要与客户端系统交互的Applet或Java Web Start程序,签名是必不可少的一环。