=============================================================
標題:JAVA JNLP組件數字簽名製作步驟
關鍵字:JNLP 數字簽名 java
作者:iuprg
2009 5.15
領域:Java j2ee
web 頁面 JNLP組件下載運行的數字簽名
[本文禁止轉載,屬於個人筆記]
=============================================================
這個證書籤名需要專門購買,中國的數字簽名機構好象還不成熟吧?
我這裏只討論自己的證書,也就是匿名的證書。
爲JAR簽名需要兩個工具:
1。用keytool來創建一個密匙(同時指定時效,多久會過期,默認只給 6個月)
2。用JARSigner用此密匙爲JAR簽名。
可以用同一個密匙來爲多個JAR簽名。
注意:大小寫,簽名一致,數字簽名過期
[謝絕轉載,如有刊登請email聯繫[email protected]]
爲什麼JAR要被簽名?當用戶啓動一個Java Network Launching Protocol (JNLP,Java網絡加載協議)文件或使用一個applet時,這個JNLP或applet可能請求系統提供一些非一般的訪問。比如“文件打開”等進行這樣的請求,就需要簽名的JAR。
如果它是匿名的,系統會詢問用戶是否打算信任JAR的簽署者。
1.首先生成簽名文件,執行完成後,會在本目錄內生成一個.keystore的密鑰文件,2kByte大小。
yourProj是別名 keypass後面是密文密碼,keystore密碼是存儲密碼(要改變此文時需要輸入確認此密碼)
在dos命令提示狀態下輸入
C:/Documents and Settings/Administrator>keytool -genkey -alias yourProj -keypas
s yourCompany:Kouling
[回車],屏幕提示:
輸入keystore密碼: yourCompany:yourPassword
您的名字與姓氏是什麼?
[Unknown]: ChinayourCompany
您的組織單位名稱是什麼?
[Unknown]: ChinayourCompany.com
您的組織名稱是什麼?
[Unknown]: Company
您所在的城市或區域名稱是什麼?
[Unknown]: City
您所在的州或省份名稱是什麼?
[Unknown]: Province
該單位的兩字母國家代碼是什麼
[Unknown]: CN
CN=ChinayourCompany, OU=ChinayourCompany.com, O=Company, L=City, ST=Province, C=CN 正確
嗎?
[否]: Y
[謝絕轉載,如有刊登請email聯繫[email protected]]
2.爲此密鑰加 有效期限:7200天,將近20年. [嘿嘿,足夠用了吧? 再也別想6個月]
輸入命令:
C:/Documents and Settings/Administrator>keytool -genkey -alias yourProj -keypass yourCompany:Kouling -selfcert -validity 7200
屏幕提示:
輸入keystore密碼: yourCompany:yourPassword
注意:-validity 7200 這個就是加時效的參數,7200單位是“天”。
檢查密鑰文件,輸入命令:
C:/Documents and Settings/Administrator>keytool -list
屏幕提示:
輸入keystore密碼: yourCompany:yourPassword
Keystore 類型: jks
Keystore 提供者: SUN
您的 keystore 包含 1 輸入
yourProj, 2009-5-15, keyEntry,
認證指紋 (MD5): D4:9D:C7:3A:91:B4:30:6A:4D:50:F1:7C:E7:F5:B9:49
說明已經生成成功完成!
3.開始爲Jar包文件簽名
用JARsigner工具
切換到項目jar包所在目錄
D:/yourPassword's--works/yourProj/webroot/app 的目錄
輸入dir可以看到:
2009-04-30 18:37 <DIR> .
2009-04-30 18:37 <DIR> ..
2009-04-30 17:55 56,317 commons-logging-1.1.jar
2009-04-30 18:37 550,863 yourCompany-app-v1.0.1.jar
輸入命令 :
jarsigner -verbose -certs commons-logging-1.1.jar yourProj
注:
verbose輸出詳細信息
certs表示驗證此jar包時輸出證書信息
屏幕提示:
輸入密鑰庫的口令短語: yourCompany:yourPassword
輸入 yourProj 的密鑰口令: yourCompany:Kouling
正在添加: META-INF/YOURPROJ.SF
正在添加: META-INF/YOURPROJ.DSA
正在添加: org/
正在添加: org/apache/
正在添加: org/apache/commons/
正在添加: org/apache/commons/logging/
正在添加: org/apache/commons/logging/impl/
。。。
。。。
接着輸入:
D:/yourProj/webroot/app>jarsigner -verbose -certs yourCompany-app-v1.0.1.jar yourProj
屏幕提示:
輸入密鑰庫的口令短語: yourCompany:yourPassword
輸入 yourProj 的密鑰口令: yourCompany:Kouling
正在添加: META-INF/YOURPROJ.SF
正在添加: META-INF/YOURPROJ.DSA
正在添加: org/
注意:重要簽名給yourCompany-app-v1.0.1.jar文件,但它使用了另外的幾個commonsxxxx包,也要簽名,否則將來使用時會提示簽名不一致的錯誤!
4。打開jar包文件的 META-INF目錄可以看到
yourProj.SF
yourProj.DSA
以及被擴充的MANIFEST.MF文件
表明已經加入了簽名文件
[完畢]
[演示圖片]
1。簽名文件
2。實際運行時的簽名提示圖和時效[謝絕轉載,如有刊登請email聯繫[email protected]]