- 论坛徽章:
- 0
|
注册一个JAR
使用商业系统发行版本的开发者要购买用于注册他们的JAR的证书,其实随便一个普通的开发者可以使用匿名证书轻松地注册一个JAR。
注册一个JAR要用到两个工具:使用keytool产生一个key,再使用JARsigner利用这个key去注册JAR。用这种方法,同一个key可以用来注册所有公司或者开发者的JAR。
为什么JAR需要注册呢?当一个用户启动一个Java网络装载协议(JNLP)文件或者使用一个applet时,JNLP或者applet要求比正常情况下更多地访问系统资源。例如,它可能有一个File | Open菜单项用于装载一个.csv文件。要完成这些请求就需要注册的JAR。如果它是匿名的,系统就会问用户是否信任JAR的注册者。
下面是使用keytool的一个例子。在实际情况中,一定要使用好的keypass和keystore口令。然后你会在注册JAR的时候使用他们。
>; keytool -genkey -alias csv -keypass 'invasion:earth'
Enter keystore password: harry:Harrison
What is your first and last name?
[Unknown]: bayard
What is the name of your organizational unit?
[Unknown]:
What is the name of your organization?
[Unknown]: generationjava.com
What is the name of your City or Locality?
[Unknown]: Springfield
What is the name of your State or Province?
[Unknown]:
What is the two-letter country code for this unit?
[Unknown]: US
Is <CN=bayard, OU=Unknown, O=generationjava.com, L=Springfield, ST=Unknown, C=US>; correct?
[no]: yes
一旦上面的过程完成了,keytool就会在你的主目录中产生一个叫做.keystore的二进制文件。运行keytool –list可以查看keystore中的内容。
>; keytool -list
Enter keystore password: harry:Harrison
Keystore type: jks
Keystore provider: SUN
Your keystore contains 1 entry:
csv, Tue Feb 05 22:49:44 EST 2002, keyEntry,
Certificate fingerprint (MD5): E8:FC:38:E3:59:72:0A:86:7F:57:C03:4C:8E:25:FC
有了这个key,你就可以使用它注册一个JAR并且应用由keytool产生的别名。这些功能都由JARsigner工具来完成。
>; JARsigner -verbose Csv.JAR csv
Enter Passphrase for keystore: harry:Harrison
Enter key password for csv: invasion:earth
updating: META-INF/MANIFEST.MF
adding: META-INF/CSV.SF
adding: META-INF/CSV.DSA
signing: com/generationjava/lang/NumberW.class
signing: com/generationjava/io/Csv.class
...snip...lots of classes...
这将添加两个文件到你的JAR中:META-INF/CSV.SF和META-INF/CSV.DSA。DSA文件包或一个二进制加密key,SF文件包括JAR中的每个类的列表和每个文件的SHA-1 Digest,所以它们的真实性可以得到保证。
现在你的JAR已经注册了。运行JARsigner –verbose –verify Csv.JAR确认你的JAR已经成功注册,它可以增强你的JNLP或者applet的功能。
|
|