<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    HelloWorld 善戰(zhàn)者,求之于勢,不責(zé)于人;故能擇人而任勢。

    知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

      BlogJava :: 首頁 ::  :: 聯(lián)系 ::  :: 管理 ::
      167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks
    一. applet中的數(shù)字簽名 1
    1 前言 2
    2 計算機環(huán)境 2
    3 客戶端需求 2
    4 編譯 2
    5 打包 2
    6 調(diào)用applet的HTML頁面 2
    7 準(zhǔn)備簽名代碼 3
    8 簽名代碼 4
    9 運行Applet 4
    二. 用jbuilder2005對applet進行數(shù)字簽名 1
    I. 數(shù)字證書的生成 1
    II. 打包 2
    III. 指定資源文件 3
    IV. 簽名Applet的目標(biāo)JAR文件 4
    V. 引用Applet包文件 6
    三. 解決applet中的網(wǎng)絡(luò)訪問問題

    1 前言
    我們知道Java Applet程序在運行的時候受到安全限制,例如不能夠訪問本地文件系統(tǒng),不能夠隨意訪問網(wǎng)絡(luò).,不能訪問數(shù)據(jù)庫。下面將介紹如何對代碼做數(shù)字簽名,讓客戶在運行時選擇是否信任你的簽名,使開發(fā)的程序具有更多的權(quán)限。在這里不打算購買證書。
    2 計算機環(huán)境
    Windows2000 professional sp3
    SUN JDK1.4.0
    IE6.0
    JAVA_HOME、PATH、CLASSPATH等環(huán)境變量均已設(shè)置
    3 客戶端需求
    客戶端瀏覽器需要安裝Java插件,這里的Java插件是安裝JDK時一起安裝的。如果客戶端不需要做Java開發(fā),可以去下載SUN的網(wǎng)站下載JRE到客戶端安裝。
    4 編譯
    在與softphone目錄的父目錄編譯這個Applet
    javac softphone *.java
    5 打包
    jar -cvf softPhone.jar softphone
    用jbuilder開發(fā)工具自帶的打包功能
    6 調(diào)用applet的HTML頁面
    <applet
       archive="softPhone.jar"
      
       codebase = "."
       code      = "softphone.gui.class"
       name      = "TestApplet"
       width     = "660"
       height    = "110"
       hspace    = "0"
       vspace    = "0"
       align     = "middle"
    >
    </applet>
    7 準(zhǔn)備簽名代碼
    首先用keytool命令產(chǎn)生用來簽名的key。下面這個命令產(chǎn)生一個叫"mykey"的key,它存儲在我們新建的叫"mystore"的keystore中。
    keytool -genkey -alias mykey -keystore mystore
    接下來它會問一些問題包括keystore的密碼,key的密碼等,如下所示:
    輸入keystore密碼:   storepass
    您的名字與姓氏是什么?
       [Unknown]:   liu
    您的組織單位名稱是什么?
       [Unknown]:   XX公司
    您的組織名稱是什么?
       [Unknown]: XX公司
    您所在的城市或區(qū)域名稱是什么?
       [Unknown]:   aa
    您所在的州或省份名稱是什么?
       [Unknown]:   sh
    該單位的兩字母國家代碼是什么
       [Unknown]:   CN
    CN=AYellow, OU=我的組織單位, O=我的組織, L=北京, ST=北京, C=CN 正確嗎?
       [否]:   Y
    輸入<mykey>的主密碼
             (如果和 keystore 密碼相同,按回車):   keypass
    完成后會在當(dāng)前目錄下生成一個叫mystore的文件,這個文件包含了我們的key。
    8 簽名代碼
    用jarsigner命令簽名我們的代碼test.jar(需要輸入keystore和key的密碼):
    jarsigner -keystore mystore test.jar mykey
    Enter Passphrase for keystore: storepass
    Enter key password for mykey: keypass
    9 運行Applet
    運行Applet,在Applet加載的時候會出現(xiàn)一個對話框,說該Applet由不可信任的發(fā)行者簽名并宣稱代碼是安全的,是不是要對Applet授權(quán)。選擇"授權(quán)于會話",就可以進行軟電話操作.
    二. 用jbuilder2005對applet進行數(shù)字簽名 1
    I. 數(shù)字證書的生成
    在JBuilder的Applet打包向?qū)е袃H需要一個數(shù)字證書,向?qū)樽罱K的JAR包生成消息摘要、消息驗證碼并簽名。通過JDK自帶的Keytool工具可以為生成一個數(shù)據(jù)證書,這個工具位于JDK的bin目錄下。
       打開DOS命名窗口,定位到JBuilder 2005下自帶的JDK的bin目錄下,執(zhí)行下面的Keytool命名生成一張自己的證書:
    C:\Borland\JBuilder2005\jdk1.4\bin>keytool -genkey -alias chenxhCA - keyalg RSA -keystore superCALib -validity 3650
      命令窗口將要求你輸入一些個人信息
    這里我們使用keytool工具生成了一個名為chenxhCA的證書,它存放到superCALib證書庫中,有效期為10年,使用的加密算法上RSA。證書庫superCALib的訪問密碼是123456,而chenxhCA證書條目的訪問密碼是123123。在輸入作為發(fā)送者身份標(biāo)識的信息后就會在當(dāng)前目標(biāo),即C:\Borland\JBuilder2005\jdk1.4\bin下生成一個名為superCALib的證書庫文件。
      keytool參數(shù)較多,使用也比較復(fù)雜,詳細使用說明,請參見Sun網(wǎng)站的幫助文檔:
    http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/keytool.html
      一般情況下你還需要將該證書發(fā)給權(quán)威的CA簽名,這個證書才會被視為合法的證書,當(dāng)然你也可以模擬創(chuàng)建一個CA證書,用這個CA證書為我們將用于簽發(fā)Applet的chenxhCA證書簽名,為了簡單起見我們忽略這一步。
    II. 打包
    現(xiàn)在已經(jīng)萬事俱備了,我們可以開始利用JBuilder的打包向?qū)pplet所以文件打包并簽名的過程。
      1) File->New...->Archive,在Archive頁中雙擊Applet JAR圖標(biāo)啟動Applet打包向?qū)А?/div>
      2) 在向?qū)У?步中指定Applet JAR的名字和保存到目標(biāo)文件,
    為了加速網(wǎng)絡(luò)下載速度,我們勾選上Compress the contents of the archive選項,壓縮JAR文件,減小文件的體積。Always create archive when building the project選項使用每次編輯工程時都重新創(chuàng)建Applet JAR包。點擊Next到下一步。
    III. 指定資源文件
    指定JAR文件中所需包含的資源文件
    由于TypeTrainApplet程序引用了3張圖片,所以JAR文件除包含TypeTrainApplet.class程序文件外,還需要將用于按鈕圖標(biāo)的文件選擇進來
    按Next到下一步。
      注意:
      當(dāng)你指定game.TypeTrainApplet.class,start.gif,pause.gif,stop.gif,hit.wav時,打成的Applet JAR包將不能正確運行,那些和TypeTrainApplet類位于同一程序文件的事件監(jiān)聽器類將被排除在外,所以需要通過game/*.*來打包。
    IV. 簽名Applet的目標(biāo)JAR文件
    由于向?qū)У?~6步,我們不需要作特別的設(shè)置,所以一直按Next到第7步。
      在這一步里,我們用上一小節(jié)中生成的數(shù)字證書簽名Applet的目標(biāo)JAR文件
    稤igitally sign this archive選項在默認(rèn)的情況下是未選中的,首先勾選該選項
      點擊稫eystore后的…按鈕,選擇我們剛才在C:\Borland\JBuilder2005\jdk1.4\bin目錄下所生成的superCALib證書庫文件。
      在稫eystore password中輸入123456,即證書庫的密碼。
      點擊稟lias后的…按鈕,由于我們在superCALib證書庫中僅有一個chenxhca證書,所以在彈出的Select Alias對話框的Available Alias列表中僅有一個chenxhca選項,選擇chenxhca證書。
      在稟lias password中輸入123123,即chenxhca證書的私鑰密碼。
      在稴tore type中輸入JKS,由于Keytool工具的默認(rèn)證書庫類型是JKS,所以superCALib的類型為JKS。
      在設(shè)置完以后的信息后,按Finish結(jié)束向?qū)В诠こ檀案竦馁Y源樹中將出現(xiàn)一個TypeTrainJAR的節(jié)點。右擊這個節(jié)點,在彈出的菜單中選擇Rebuild,JBuilder將創(chuàng)建Applet的JAR包,并用chenxhca證書簽名。
      Rebuild完成后,工程窗格的Applet JAR節(jié)點就可以展開了,展開這個節(jié)點,我們發(fā)現(xiàn)目標(biāo)JAR文件中除了資源文件以外,在META-INF文件夾下還有3個文件
    META-INF文件夾下的3個文件是和數(shù)字簽名有關(guān)的文件,說明如下:
      MANIFEST.MF:這個 manifest 文件定義了與擴展和包相關(guān)的數(shù)據(jù)。
      MONITOR.SF:這是 JAR 文件的簽名文件,文件名標(biāo)識了簽名者。
      MONITOR.DSA:與簽名文件相關(guān)聯(lián)的簽名程序塊文件,它存儲了用于簽名 JAR 文件的公共簽名。

    V. 引用Applet包文件
     我們現(xiàn)在來更改TypeTrainApplet.html中<applet>的屬性使其通過JAR來引用Applet程序。這個過程很簡要,打開TypeTrainApplet.html文件,切換到Source視圖頁中,將光標(biāo)定位在<applet>標(biāo)簽中。窗口右邊出現(xiàn)<applet>標(biāo)簽的屬性輸入編輯器,在archive中輸入game.JAR,按回車
    JBuilder為<applet>標(biāo)簽添加archive的屬性。由于game.JAR文件位于工程根目錄下,而TypeTrainApplet.html文件位于工程目錄的classes子文件夾下,所以需要將TypeTrainApplet.html拷貝到工程根目錄下,這樣archiver="game.JAR "的屬性聲明才是正確的,因為在尋找程序資源時,是以TypeTrainApplet.html所在目錄為相對路徑的。
      保存后,到工程目錄下雙擊TypeTrainApplet.html文件,IE檢測到網(wǎng)頁中包含了經(jīng)過簽名的Applet程序,彈出一個安全警告的對話框
     由于我們的證書沒有經(jīng)過權(quán)威機構(gòu)的簽名認(rèn)證,所以對話框提示"此安全證書是由不可信的公司簽發(fā)的"信息。需要指出的是游覽器的JRE版本不同,彈出的警告對話框并不相同,上圖是JRE版本為1.5.0時的警告對話框。
      可以通過點擊"更多詳細信息"按鈕查看證書的信息
    點選"簽發(fā)人"項,將可以看到證書執(zhí)有者的個人信息。關(guān)閉這個對話框,回到 "警告-安全"對話框中,點擊"是"接受這個簽名的Applet。IE就對這個Applet開放了安全權(quán)限,不再受沙盒模型的限制了。
       彈出因網(wǎng)絡(luò)斷開,或啟用防火墻而出現(xiàn)的對話框.  
    通過加強數(shù)字簽名解決。
    解決問題的方法:
    在C:\soft\jdk\jre\lib\security\java.policy中加入
    grant {
    permission java.net.SocketPermission "*", "connect,accept,resolve";
    permission java.net.SocketPermission "*:1024-65535", "listen,accept,connect";
    };


    </script>

    posted on 2007-08-13 18:54 helloworld2008 閱讀(841) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: tom影院亚洲国产一区二区| 亚洲国产精品国自产电影| 性色午夜视频免费男人的天堂| 美女被免费网站在线视频免费| 亚洲网站免费观看| 一级成人a做片免费| 亚洲人成网站日本片| 亚洲国产中文字幕在线观看| 五月婷婷在线免费观看| 中文字幕在线视频免费观看| 亚洲日韩亚洲另类激情文学| 亚洲高清视频在线播放| 国产精品亚洲精品日韩已满| 成人亚洲综合天堂| 日韩一级视频免费观看| 国产乱子精品免费视观看片| 久久精品国产免费| 西西人体免费视频| fc2成年免费共享视频网站| 国产亚洲精品仙踪林在线播放| 久久亚洲欧洲国产综合| 国国内清清草原免费视频99 | 久久亚洲AV成人无码国产| 亚洲国产精品成人网址天堂| 日本免费一区尤物| 日韩精品无码人妻免费视频| 日韩欧美一区二区三区免费观看| 免费一级全黄少妇性色生活片| 亚洲av无码天堂一区二区三区 | 亚洲国产中文v高清在线观看| 少妇人妻偷人精品免费视频| 国产午夜成人免费看片无遮挡| 亚洲伊人久久大香线蕉| 911精品国产亚洲日本美国韩国 | 亚洲无码视频在线| 亚洲国产激情一区二区三区| 亚洲AⅤ优女AV综合久久久| 国产免费一区二区三区VR| 亚洲Av无码乱码在线znlu| 亚洲伊人成无码综合网 | 最近的中文字幕大全免费8|