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

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

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

    HelloWorld 善戰者,求之于勢,不責于人;故能擇人而任勢。

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

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

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

    V. 引用Applet包文件
     我們現在來更改TypeTrainApplet.html中<applet>的屬性使其通過JAR來引用Applet程序。這個過程很簡要,打開TypeTrainApplet.html文件,切換到Source視圖頁中,將光標定位在<applet>標簽中。窗口右邊出現<applet>標簽的屬性輸入編輯器,在archive中輸入game.JAR,按回車
    JBuilder為<applet>標簽添加archive的屬性。由于game.JAR文件位于工程根目錄下,而TypeTrainApplet.html文件位于工程目錄的classes子文件夾下,所以需要將TypeTrainApplet.html拷貝到工程根目錄下,這樣archiver="game.JAR "的屬性聲明才是正確的,因為在尋找程序資源時,是以TypeTrainApplet.html所在目錄為相對路徑的。
      保存后,到工程目錄下雙擊TypeTrainApplet.html文件,IE檢測到網頁中包含了經過簽名的Applet程序,彈出一個安全警告的對話框
     由于我們的證書沒有經過權威機構的簽名認證,所以對話框提示"此安全證書是由不可信的公司簽發的"信息。需要指出的是游覽器的JRE版本不同,彈出的警告對話框并不相同,上圖是JRE版本為1.5.0時的警告對話框。
      可以通過點擊"更多詳細信息"按鈕查看證書的信息
    點選"簽發人"項,將可以看到證書執有者的個人信息。關閉這個對話框,回到 "警告-安全"對話框中,點擊"是"接受這個簽名的Applet。IE就對這個Applet開放了安全權限,不再受沙盒模型的限制了。
       彈出因網絡斷開,或啟用防火墻而出現的對話框.  
    通過加強數字簽名解決。
    解決問題的方法:
    在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
    主站蜘蛛池模板: 亚洲高清专区日韩精品| 国产免费观看视频| 午夜亚洲www湿好大| 午夜亚洲福利在线老司机| 亚洲Av高清一区二区三区| 精品无码免费专区毛片| 亚洲综合久久久久久中文字幕| 亚洲无砖砖区免费| 亚洲AV日韩AV永久无码免下载| 亚洲男人在线无码视频| 亚洲AV一二三区成人影片| 在线精品一卡乱码免费| 亚洲中文久久精品无码1| 国产精品久久久久免费a∨| 全部免费毛片免费播放| 亚洲成a人片在线观看中文!!!| 亚洲精品亚洲人成在线播放| aaa毛片免费观看| 亚洲国产精华液网站w| 久久久久国产免费| 亚洲国产视频网站| 在线播放免费播放av片| 亚洲精品国产专区91在线| 国产精彩免费视频| 亚洲国产精品成人午夜在线观看| 免费人成网站永久| 亚洲线精品一区二区三区影音先锋 | 亚洲av无码不卡一区二区三区| 亚洲福利视频一区二区三区| 黄页网站免费在线观看| 久久精品国产亚洲AV天海翼| 国产a视频精品免费观看| 亚洲人成图片网站| 亚洲精品456播放| fc2免费人成为视频| 免费看国产曰批40分钟| 国产一级a毛一级a看免费视频| 三年片免费高清版 | 亚洲日韩乱码久久久久久| 国产精品久久久久久久久久免费| 免费无码成人AV片在线在线播放|