亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Applet安全限制和簽名Applet

系統 1989 0

最實用的部分就是打包跟簽名
最近在研究applet,打算使用applet來開發一個上傳 文件上傳 控件,之前因為一直覺得applet的沙箱控制導致applet不能主動的訪問客戶端的資源,所以也曾因此而放棄.不過最近在研究applet的簽名后,有了點收獲,可以通過簽名jar文檔來達到這樣的控制策略,下面是我在實際實驗過程中的一些心得和體會,跟大家一起分享下.( 注:如果轉載此文,請注明出處和作者,尊重作者的勞動成果,謝謝 )

一、壓縮你的class類文件為jar包
1.假設你的需要壓縮的類文件存在的包為:cn.mbq.test1和cn.mbq.test2
2.進入你的classes目錄,在DOS窗口中執行命令:jar cf mytest.jar cn.mbq.test1 cn.mbq.test2
3.執行命令后你會在當前目錄中找到mytest.jar文件,這個就是剛才生成的檔案文件。你可以修改它的后綴為rar,然后使用winrar壓縮程序打開它查看看是否正確。
(說明:正確的方法應該是 jar cf mytest.jar cn/mbq/test1 cn/mbq/test2 )

二、使用keytool工具生成密匙庫
1.keytool工具位于${java_home}/bin目錄下;
2.在DOS窗口中執行命令:keytool -genkey -keystore mytest.store -alias mbq?
? 注意:mytest.store 是你的密匙庫的名稱,可以隨意修改,后綴請不要修改!
如果需要可以添加參數DOS命令
keytool -genkey -keystore mytest.store -alias mbq?-validity 3650
?
-validity 3650 表示的是有效期是3650天,默認情況是六個月有效期。
mbq 為別名,這個也可以改成自己的名稱
3.執行上述命令后,DOS窗口中會提示你輸入keystore的密碼、你的姓名、組織單位等等信息。這里要注意的是輸入密碼請記住,后面要用到的。在最后,我們輸入y確認信息。然后再直接回車設置mbq的主密碼和store密碼一致即可!


三、使用keytool工具導出簽名時用到的證書
1.在DOS窗口中執行命令:keytool -export -keystore mytest.store -alias mbq -file mbq.cert
注意:mytest.store 就是第二步生成的密匙庫名稱
mbq 也是在第二步中我們指定的別名
mbq.cert 為我們生成的證書的名稱,可以自己修改名稱,注意后綴不要改
2.命令執行成功,我們會在當前目錄下找到一個mbq.cert文件,這個就是我們剛才生成的證書。


四、使用jarsigner工具簽名jar壓縮文檔
1.jarsigner工具位于${java_home}/bin目錄下;
2.在當前DOS窗口中執行命令:jarsigner -keystore mytest.store mytest.jar mbq
注意:mytest.store 就是我們在第二步中生成的密匙庫名稱
mytest.jar 就是我們這第一步壓縮的jar文檔
mbq 是提供者的名稱,我們這里設置為我們的別名
修改客戶端的程序是需要重新打包和簽名。

五、創建mytest.policy文件
1.在當前目錄下創建一個mytest.policy文件,其內容如下:
keystore"file:mytest.store","JKS";
grantsignedBy"mbq"
{
permission java.io.FilePermission"<<ALLFILES>>","read";
};
2.這個文件的意思就是說讓所有由mbq簽名的applet都可以對本地的所有文件進行讀操作。


六、歸檔文件
通過上述的五個操作后,我們會在當前目錄中找到如下幾個文件:mytest.jar-簽名后的jar文檔、mytest.store-密匙庫、 mbq.cert-證書、mytest.policy-訪問策略文件。如果沒有這些文件,那么你的applet數字簽名過程就沒有正確的完成,請檢查上述的操作。以后,如果對打包的java文件做了修改,那么就需要重新簽名一次才可以!


七、在網頁中運行applet
1.假設你的applet中的主啟動類為:cn.test.TestApplet.class;整個前面生成的檔案文件、證書啊存儲在目錄:d:\test\myapplet下;
2.建立一applet_test.html文件存放在任何目錄下都可以,然后內容如下:

Java代碼 復制代碼
  1. 1 ?<HTML>...</HTML><HTML>???
  2. 2 ?<BODY>...</BODY><BODY>???
  3. 3 ?<APPLET?CODEBASE= "d:\test\myapplet" ?CODE= "cn.test.TestApplet.class" ?ARCHIVE= "mytest.jar" ?WIDTH= 200 ?HEIGHT= 100 ?name= "myapp" >???
  4. 4 ?</APPLET>???
  5. 5 ?</BODY>???
  6. 6 ?</HTML>??


注意:其中的CODEBASE就是你的類的基礎目錄,CODE也就是你的APPLET的啟動主類,ARCHIVE也就是簽名后的JAR文檔。
2.然后在IE中打開該html文件,那么會看到IE提示你是否信任該插件,也就是說我們的證書起作用了,然后確定運行后,就可以在頁面上看到applet的運行效果了。

但是由于SUN和MS的問題,目前IE并不支持最新的JRE,而是使用MS自己開發的JRE,所以這個也是影響APPLET發展壯大的一個原因。而且正是由于這個原因,SUN的java-plugin技術才會出現。使用SUN的java-plugin技術我們就可以在applet中使用最新的JAVA類庫了。由于IE在遇到APPLET標簽的時候會調用自己的JRE,但是如果客戶機器上安裝的JRE不是我們想要的版本,那么就會出錯了。所謂java- plugin技術就是利用IE的插件機制來制定我們想要的JRE,我們可以在IE中使用OBJECT標簽來調用APPLET,這樣就不會引用MS的JRE 了,從而達到我們想要的效果,而且java-plugin技術不僅僅支持IE,還支持Navigator等瀏覽器。不過我們需要編寫比較復雜的HTML代碼了,但是這一且SUN已經幫我們做到了,呵呵,在JDK1.4或更高的版本中SUN提供了一個HtmlConverter.exe工具來幫助將包含 applet標簽的html轉換成包含OBJECT和EMBED標簽的html代碼,該工具位于${java_home}/bin目錄下,對于1.4以前的版本該工具則是單獨提供的,不過現在幾乎都是1.4或1.5甚至更高版本的JDK了吧,呵呵。

該工具很簡單,是圖形化的工具,我們直接運行即可。比如我將上面的包含applet的html轉換后(比如我選擇只支持IE的),其代碼變成了如下:
Java代碼 復制代碼
  1. 01 ?<HTML>...</HTML><HTML>???
  2. 02 ?<BODY>...</BODY><BODY>???
  3. 03 ?<!-- "CONVERTED_APPLET" -->???
  4. 04 ?<!--?HTML?CONVERTER?-->???
  5. 05 ?<object???
  6. 06 ?????classid?=? "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" ???
  7. 07 ?????codebase?=? "http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=5,0,0,3" ???
  8. 08 ?????WIDTH?=? 200 ?HEIGHT?=? 100 ?NAME?=? "myapp" ?>???
  9. 09 ?????<PARAM?NAME?=?CODE?VALUE?=? "cn.test.TestApplet.class" ?>???
  10. 10 ?????<PARAM?NAME?=?CODEBASE?VALUE?=? "d:\test\myapplet" ?>???
  11. 11 ?????<PARAM?NAME?=?ARCHIVE?VALUE?=? "mytest.jar" ?>???
  12. 12 ?????<PARAM?NAME?=?NAME?VALUE?=? "myapp" ?>???
  13. 13 ?????<param?name?=? "type" ?value?=? "application/x-java-applet;version=1.5" >???
  14. 14 ?????<param?name?=? "scriptable" ?value?=? "false" >???
  15. 15 ?</object>???
  16. 16 ?<!--???
  17. 17 ?<APPLET?CODEBASE= "d:\test\myapplet" ?CODE= "cn.test.TestApplet.class" ?ARCHIVE= "mytest.jar" ???
  18. 18 ?WIDTH= 200 ?HEIGHT= 100 ?name= "myapp" >???
  19. 19 ?</APPLET>???
  20. 20 ?-->???
  21. 21 ?<!-- "END_CONVERTED_APPLET" -->???
  22. 22 ?</BODY>???
  23. 23 ?</HTML>??
?

注意其中的OBJECT標簽,可以看到APPLET標簽已經被注釋掉了。其中PARAM NAME=NAME這一行中的myapp就是我們applet應用程序的名稱,在IE提示的確認運行中顯示的就是這個名稱了,我們可以改為自己的公司或組織的名稱。然后提示的提供者也就是我們在簽名時用到的名稱了。

另外,還要特別注意的就是這個包含OBJECT標簽的html頁面必須和你的mytest.jar壓縮文檔放在同一個目錄下,這樣才可以正確的加載,否則會一直報ClassNotFound的異常的,即使我們在OBJECT標簽中指定了CODEBASE也不行,這個是我在測試的時候遇到的問題!


八、在Internet上應用簽名的applet
如果要把applet部署在網絡上,那么最好是采用OBJECT標簽的形式,同時也要兼顧采用EMBED標簽來支持諸如FF等瀏覽器。我們把已簽名了的 mytest.jar和我們的網頁放在同一個目錄下,至于其他的如mytest.store和mbq.cert可以不用放在一起,至少我在測試的過程中沒有放到一起也不會出錯,而且在不同的機器上運行的也非常好,可以讀取客戶端機器的資源!另外,也發現mytest.policy其實也沒什么用處,因為這是參考網絡上的,而且他們的版本都是1.3左右,所以估計是版本低的緣故吧!


到此,我們就已經完成了applet的簽名到部署,以及到實際的網絡應用中了。這樣我們使用applet來開發控件時就不會因為無法讀取客戶端資源而放棄了,呵呵~~

說明:根據實際應用,其實最 有用的就是將程序打成jar包,并對jar包進行數字簽名。

Applet安全限制和簽名Applet


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 免费精品99久久国产综合精品 | 五月婷在线视频 | 四虎国产精品永久地址51 | 香蕉视频免费在线看 | 4hu四虎| 欧洲在线免费视频 | 国产在线一区二区三区 | 国产精品u任我爽爆在线播放 | 国产精品国产国产aⅴ | 中文一级毛片 | 日本在线无 | jizz中国jizz女人 | 四虎影院最新地址 | 97国产免费全部免费观看 | 久久综合日韩亚洲精品色 | 成人精品第一区二区三区 | 在线观看一区二区精品视频 | 欧美国产日韩在线观看 | 久热久 | 亚洲欧洲精品视频在线观看 | 热久久99精品这里有精品 | 国产网址在线观看 | 久久久婷婷亚洲5月97色 | 欧美黄网站 | 国人精品视频在线观看 | 伊人影视频 | 2019亚洲日韩新视频 | 国产免费不卡v片在线观看 国产免费不卡视频 | 日本不卡毛片一二三四 | 奇米狠狠干 | 日本中文字幕在线观看 | 91视频免费网站 | 欧美一级爱爱视频 | 99精品在线观看视频 | 亚洲欧美综合视频 | 一区二区三区在线 | 欧 | 日日噜噜噜夜夜爽爽狠狠图片 | 激情综合五月婷婷 | 涩色网站 | 亚洲成精品动漫久久精久 | 久久久久综合网 |