Java2下Applet數(shù)字簽名
更新時間:2006年10月13日 00:00:00 作者:
我的項目是使用APPLET制作一個實時消息隊列監(jiān)控程序,由于涉及到了本地資源,對APPLET一定要進行數(shù)字簽名和認證。我使用的環(huán)境是WINDOWS2000,應用服務器是WEBLOGIC6.0,開發(fā)環(huán)境是JBUILDER4.0。之前我提醒大家一定要注意服務器端和客戶端的概念。那些文件應該在服務器端,那些文件應該在客戶端。
首先在客戶端使用JRE1.3.0_01(JAVA運行環(huán)境1.3.0.1版本)以取代IE的JVM(JAVA虛擬機),可以到WWW.JAVA.SUN.COM網(wǎng)站上去下載,下載好了先在客戶端安裝好,安裝過程非常簡單。
在服務器端的調(diào)用APPLET的HTML文件中也需要將它包含進來,以便沒有事先安裝JRE的客戶端下載,具體的寫法,請接著往下看;
具體步驟如下:
服務器端:
1.將程序需要用到的各種包文件全部解壓(我這兒要用到WEBLOGIC的JMS包使用命令jar xf weblogicc.jar),然后使用JDK的打包命令將編譯好的監(jiān)控程序.class和剛才解壓的包一起打包到一個包中。(前提我已經(jīng)將監(jiān)控程序和解開的包都放在同一個目錄下了),都是dos狀態(tài)下的命令,具體命令見jdk1.3(1.2)的bin目錄下,
命令如下:
jar cvf monitor.jar *.class
此命令生成一個名為monitor.jar的包
2.為剛才創(chuàng)建的包文件(monitor.jar)創(chuàng)建keystore和keys。其中,keystore將用來存放密匙(private keys)和公共鑰匙的認證,alias別名這兒取為monitor。
命令如下:
keytool -genkey -keystore monitor.keystore –alias monitor
此命令生成了一個名為monitor.keystore的keystore文件,接著這條命令,系統(tǒng)會問你好多問題,比如你的公司名稱,你的地址,你要設定的密碼等等,都由自己的隨便寫。
3.使用剛才生成的鑰匙來對jar文件進行簽名
命令如下:
jarsigner -keystore monitor.keystore monitor.jar monitor
這個命令將對monitor.jar文件進行簽名,不會生成新文件。
4.將公共鑰匙導入到一個cer文件中,這個cer文件就是要拷貝到客戶端的唯一文件 。
命令如下:
keytool -export -keystore monitor.keystore -alias monitor -file monitor.cer
此條命令將生成monitor.cer認證文件,當然這幾步都有可能問你剛才設置的密碼。這樣就完成了服務器端的設置。這時你就可以將jar文件和keystore文件以及cer文件(我這兒是monitor.jar,monitor.keystore,monitor.cer)拷貝到服務器的目錄下了,我用的是weblogic6.0,所以就拷貝到C:eawlserver6.0configmydomainapplicationsDefaultWebApp_myserver下的自己建的一個目錄下了。
客戶端:
1. 首先應該安裝jre1.3.0_01,然后將服務器端生成的monitor.cer 文件拷貝到jre的特定目錄下,我這兒是:
c:program filesjavasoftjre.3.0_01libsecurity目錄下。
2. 將公共鑰匙倒入到jre的cacerts(這是jre的默認keystore)
命令如下:
keytool -import -alias monitor -file monitor.cer
-keystore cacerts
注意這兒要你輸入的是cacerts的密碼,應該是changeit,而不是你自己設定的keystore的密碼。
3. 修改policy策略文件,在dos狀態(tài)下使用命令 policytool
系統(tǒng)會自動彈出一個policytool的對話框,如圖4所示,在這里面首先選擇file菜單的open項,打開c:program filesjavasoftjre.3.0_01libsecurity目錄下的java.poliy文件,然后在edit菜單中選擇Change keystore ,在對話框中new keystore url:中輸入
file:/c:/program files /javasoft/jre/1.3.0_01/lib/security/cacerts, 這兒要注意反斜杠,在new keystore type 中輸入JKS,這是cacerts的固定格式,然后單擊Add Policy Entry,在出現(xiàn)的對話框中CodeBase中輸入:
http://URL:7001/*
其中的URL是服務器的IP地址,7001是我的weblogic的端口,如果你是在別的應用服務器上比如說是apache,那端口號就可以省略掉。
在SignedBy中輸入(別名alias):這兒是Monitor然后單擊add peimission按鈕,在出現(xiàn)的對話框中permission中選擇你想給這個applet的權限,這兒具體有許多權限,讀者可以自己找資料看看。我這兒就選用allpeimission,右邊的signedBy中輸入別名:monitor
最后保存,在file菜單的save項。
當然你可以看見我已經(jīng)對多個包實現(xiàn)了簽名認證。
這樣客戶端的設置就完成了。在客戶端用ie運行該applet程序時,會詢問你是不是對該簽名授權,選擇授權后,包會自動從服務器下載到本地計算機,而且ie會自動啟動jre,在右下欄中可以看見,相當于ie的java控制臺。
4.調(diào)用applet的html文件
大家都知道由于java2的安全性,對applet的正常調(diào)用的html文件已經(jīng)不能再使用了,而改為ActiveX類型的調(diào)用。具體的又分ie和nescape的不同寫法,這一些在sun網(wǎng)上都能找到現(xiàn)成的教程。我就不多說了,只是將我的這個小程序為ie寫的的html給大家看看。
?。糷tml>
?。糓ETA HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=gb2312">
?。糲enter>
?。糷3>消息中心實時監(jiān)控平臺</h3>
<hr>
?。糘BJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="900" height="520" align="baseline" codebase="http://192.168.2.217:7001/j2re-1_3_0_01-win-i.exe#Version=1,3,0,0">
?。糚ARAM NAME="java_code" VALUE="wise.monitor.applet.monitorApplet">
<PARAM NAME="java_codebase" VALUE="monitor/classes">
?。糚ARAM NAME="java_type" VALUE="application/x-java-applet;version=1.3">
?。糚ARAM NAME="ARCHIVE" VALUE="monitor.jar" >
?。糚ARAM NAME="scriptable" VALUE="true">
?。?OBJECT>
?。?center>
?。?html>
其中我要強調(diào)一點,因為applet每一次的改動都需要重新打包簽名,手續(xù)非常繁瑣,所以在具體的實現(xiàn)中要將一些會變化參數(shù)放到html文件中來,傳到applet中去,這一點網(wǎng)上文章好多,自己去看吧。
另外一個就是有朋友問我,那這樣不是太麻煩了,每一個客戶端都要進行復雜的dos命令操作,我只能說一目前我的水平只能將一個已經(jīng)做好的客戶端文件cer文件和java.policy以及cacerts文件直接拷貝到客戶端,當然這也有缺陷,如果別人的計算機已經(jīng)有了認證,就會丟失。就這些問題我們可以一起探討。
另外還有一點優(yōu)化,就是在打包的時候,我這兒只講了把所有要用的涉及到安全性的包和源程序到要打到一個包中。這樣如果包非常大的話,會非常影響下載的速度,如果可以使用本地計算機的包就好了,這一點jre也做到了,具體的要到控制面板的jre控制臺上去設置。這個就留著讀者自己去摸索吧。
結束語
我發(fā)現(xiàn)網(wǎng)上java相關的資料非常少,中文的更少,所以希望自己能將一些小知識和大家共享,省掉許多重復的無用功。如果大家對這個問題還有不清楚的地方,或者就這問題相進一步展開討論的,請和我聯(lián)系,我的信箱是afeilb@163.net。希望我們能共同進步!
首先在客戶端使用JRE1.3.0_01(JAVA運行環(huán)境1.3.0.1版本)以取代IE的JVM(JAVA虛擬機),可以到WWW.JAVA.SUN.COM網(wǎng)站上去下載,下載好了先在客戶端安裝好,安裝過程非常簡單。
在服務器端的調(diào)用APPLET的HTML文件中也需要將它包含進來,以便沒有事先安裝JRE的客戶端下載,具體的寫法,請接著往下看;
具體步驟如下:
服務器端:
1.將程序需要用到的各種包文件全部解壓(我這兒要用到WEBLOGIC的JMS包使用命令jar xf weblogicc.jar),然后使用JDK的打包命令將編譯好的監(jiān)控程序.class和剛才解壓的包一起打包到一個包中。(前提我已經(jīng)將監(jiān)控程序和解開的包都放在同一個目錄下了),都是dos狀態(tài)下的命令,具體命令見jdk1.3(1.2)的bin目錄下,
命令如下:
jar cvf monitor.jar *.class
此命令生成一個名為monitor.jar的包
2.為剛才創(chuàng)建的包文件(monitor.jar)創(chuàng)建keystore和keys。其中,keystore將用來存放密匙(private keys)和公共鑰匙的認證,alias別名這兒取為monitor。
命令如下:
keytool -genkey -keystore monitor.keystore –alias monitor
此命令生成了一個名為monitor.keystore的keystore文件,接著這條命令,系統(tǒng)會問你好多問題,比如你的公司名稱,你的地址,你要設定的密碼等等,都由自己的隨便寫。
3.使用剛才生成的鑰匙來對jar文件進行簽名
命令如下:
jarsigner -keystore monitor.keystore monitor.jar monitor
這個命令將對monitor.jar文件進行簽名,不會生成新文件。
4.將公共鑰匙導入到一個cer文件中,這個cer文件就是要拷貝到客戶端的唯一文件 。
命令如下:
keytool -export -keystore monitor.keystore -alias monitor -file monitor.cer
此條命令將生成monitor.cer認證文件,當然這幾步都有可能問你剛才設置的密碼。這樣就完成了服務器端的設置。這時你就可以將jar文件和keystore文件以及cer文件(我這兒是monitor.jar,monitor.keystore,monitor.cer)拷貝到服務器的目錄下了,我用的是weblogic6.0,所以就拷貝到C:eawlserver6.0configmydomainapplicationsDefaultWebApp_myserver下的自己建的一個目錄下了。
客戶端:
1. 首先應該安裝jre1.3.0_01,然后將服務器端生成的monitor.cer 文件拷貝到jre的特定目錄下,我這兒是:
c:program filesjavasoftjre.3.0_01libsecurity目錄下。
2. 將公共鑰匙倒入到jre的cacerts(這是jre的默認keystore)
命令如下:
keytool -import -alias monitor -file monitor.cer
-keystore cacerts
注意這兒要你輸入的是cacerts的密碼,應該是changeit,而不是你自己設定的keystore的密碼。
3. 修改policy策略文件,在dos狀態(tài)下使用命令 policytool
系統(tǒng)會自動彈出一個policytool的對話框,如圖4所示,在這里面首先選擇file菜單的open項,打開c:program filesjavasoftjre.3.0_01libsecurity目錄下的java.poliy文件,然后在edit菜單中選擇Change keystore ,在對話框中new keystore url:中輸入
file:/c:/program files /javasoft/jre/1.3.0_01/lib/security/cacerts, 這兒要注意反斜杠,在new keystore type 中輸入JKS,這是cacerts的固定格式,然后單擊Add Policy Entry,在出現(xiàn)的對話框中CodeBase中輸入:
http://URL:7001/*
其中的URL是服務器的IP地址,7001是我的weblogic的端口,如果你是在別的應用服務器上比如說是apache,那端口號就可以省略掉。
在SignedBy中輸入(別名alias):這兒是Monitor然后單擊add peimission按鈕,在出現(xiàn)的對話框中permission中選擇你想給這個applet的權限,這兒具體有許多權限,讀者可以自己找資料看看。我這兒就選用allpeimission,右邊的signedBy中輸入別名:monitor
最后保存,在file菜單的save項。
當然你可以看見我已經(jīng)對多個包實現(xiàn)了簽名認證。
這樣客戶端的設置就完成了。在客戶端用ie運行該applet程序時,會詢問你是不是對該簽名授權,選擇授權后,包會自動從服務器下載到本地計算機,而且ie會自動啟動jre,在右下欄中可以看見,相當于ie的java控制臺。
4.調(diào)用applet的html文件
大家都知道由于java2的安全性,對applet的正常調(diào)用的html文件已經(jīng)不能再使用了,而改為ActiveX類型的調(diào)用。具體的又分ie和nescape的不同寫法,這一些在sun網(wǎng)上都能找到現(xiàn)成的教程。我就不多說了,只是將我的這個小程序為ie寫的的html給大家看看。
?。糷tml>
?。糓ETA HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=gb2312">
?。糲enter>
?。糷3>消息中心實時監(jiān)控平臺</h3>
<hr>
?。糘BJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="900" height="520" align="baseline" codebase="http://192.168.2.217:7001/j2re-1_3_0_01-win-i.exe#Version=1,3,0,0">
?。糚ARAM NAME="java_code" VALUE="wise.monitor.applet.monitorApplet">
<PARAM NAME="java_codebase" VALUE="monitor/classes">
?。糚ARAM NAME="java_type" VALUE="application/x-java-applet;version=1.3">
?。糚ARAM NAME="ARCHIVE" VALUE="monitor.jar" >
?。糚ARAM NAME="scriptable" VALUE="true">
?。?OBJECT>
?。?center>
?。?html>
其中我要強調(diào)一點,因為applet每一次的改動都需要重新打包簽名,手續(xù)非常繁瑣,所以在具體的實現(xiàn)中要將一些會變化參數(shù)放到html文件中來,傳到applet中去,這一點網(wǎng)上文章好多,自己去看吧。
另外一個就是有朋友問我,那這樣不是太麻煩了,每一個客戶端都要進行復雜的dos命令操作,我只能說一目前我的水平只能將一個已經(jīng)做好的客戶端文件cer文件和java.policy以及cacerts文件直接拷貝到客戶端,當然這也有缺陷,如果別人的計算機已經(jīng)有了認證,就會丟失。就這些問題我們可以一起探討。
另外還有一點優(yōu)化,就是在打包的時候,我這兒只講了把所有要用的涉及到安全性的包和源程序到要打到一個包中。這樣如果包非常大的話,會非常影響下載的速度,如果可以使用本地計算機的包就好了,這一點jre也做到了,具體的要到控制面板的jre控制臺上去設置。這個就留著讀者自己去摸索吧。
結束語
我發(fā)現(xiàn)網(wǎng)上java相關的資料非常少,中文的更少,所以希望自己能將一些小知識和大家共享,省掉許多重復的無用功。如果大家對這個問題還有不清楚的地方,或者就這問題相進一步展開討論的,請和我聯(lián)系,我的信箱是afeilb@163.net。希望我們能共同進步!
您可能感興趣的文章:
- JAVA加密算法數(shù)字簽名實現(xiàn)原理詳解
- Java PDF 添加數(shù)字簽名的實現(xiàn)方法
- Java實現(xiàn)的數(shù)字簽名算法RSA完整示例
- 詳解Java數(shù)字簽名提供XML安全
- 淺析java消息摘要與數(shù)字簽名
- Java數(shù)字簽名算法DSA實例詳解
- Java加密解密和數(shù)字簽名完整代碼示例
- 使用數(shù)字簽名實現(xiàn)數(shù)據(jù)庫記錄防篡改(Java實現(xiàn))
- 常用數(shù)字簽名算法RSA與DSA的Java程序內(nèi)實現(xiàn)示例
- Java加密和數(shù)字簽名編程
- Java 添加數(shù)字簽名到excel及檢測,刪除簽名
相關文章
JBuilder2005實戰(zhàn)JSP之切換控制 圖文步驟
由于在login.jsp的表單中通過action屬性指定switch.jsp為響應的JSP文件,當用戶在login.jsp中選定登錄用戶,輸入密碼提交表單后,客戶端將向服務器發(fā)送一個HTTP請求,服務器即調(diào)用switch.jsp來響應這個請求2012-08-08JSP 開發(fā)之Spring BeanUtils組件使用
這篇文章主要介紹了JSP 開發(fā)之Spring BeanUtils組件使用的相關資料,這里提供實例幫助大家理解如何使用Spring BeanUtils組件,需要的朋友可以參考下2017-08-08JSP中實現(xiàn)系統(tǒng)登錄后的退出原理及代碼
首先要在你登錄的頁面的某個地方,寫上一個超級鏈接,讓它鏈接到exit.jsp頁面去,然后新建一個exit.jsp頁面在其body中寫上如下代碼,即可以實現(xiàn)登錄后的退出,感興趣的朋友可以了解下啊,或許對你有所幫助2013-01-01