熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Trusted Applet的制作和運行

2022-06-13   來源: Java核心技術 

  本系統的客戶程序是Java Applet但它的執行需要讀本地硬盤以及進行安全算法方面
  操作這些操作都需要有本地Application的權限而無法在普通的沙箱機制的限制下運
  行
   沙箱機制對Applet的安全性限制
  在浏覽器或者appletviewer中運行遠程主機上存放的Applet時Java VM認為它是不可信
  任的將其置於所謂sandbox的保護之下在這樣的情況下Applet的運行受到下面的限制
  
  b) Applet不能讀寫客戶端主機上的文件
  c) Applet不能執行JCE/JCA中的addProvider操作
  d) 在進行網絡連接時Applet只能與提供它的服務器建立連接
  e) Applet在事件捕獲讀取系統信息等其他方面受到限制
  f) 在Netscape浏覽器中不提供javasecurity*的支持在IE浏覽器中對Applet的運行
  做了比appletviewer中更加高的限制
  由於上述的限制安全公文傳遞系統的客戶程序直接在浏覽器或appletviewer中運行時會
  遇到下列問題
  b) 客戶程序無法讀寫客戶機的存儲設備
  c) 客戶程序無法執行addProvider操作
  d) 在使用額外類庫時發生Security Exception
  e) 在Netscape浏覽器中因為缺乏javasecurity*的支持而完全無法運行
  f) 在IE浏覽器中發生更多的Security Exception
  產生這些問題的原因是各種java VM將公文系統的客戶程序視為不可信任的解決的方法
  是要使Java VM信任公文系統的客戶程序
   Applet的簽名和信任機制
  要使Applet得到虛擬機的信任就要有辦法讓虛擬機知道Applet是可信任的人提供的SUN
  Netscape
  Communicator和IE各自提供了一套互相之間不兼容的Applet簽名機制它們的原理都
  是相同的就是通過驗證一個可信任的簽名者的數字簽名來驗證Applet是由可信任的作
  者提供的在安全公文傳遞系統中我們采用了SUN提供的簽名機制並通過安裝java
  plugin使得在各種浏覽器中都可以使用這套簽名機制
  SUN在JDKX版本中提供了一個名為javakey的小程序它能夠替開發者完成對Applet進行
  數字簽名的所有步驟也能替最終用戶完成設置對開發者信任的工作要對Applet進行數
  字簽名之前必須用JDK的另外一個工具程序jar將applet中用到的類打包成一個JAR文件
  這樣建立一套基於ja
  vakey的Applet簽名和信任體系包括下列三項工作
  * 用jar工具創建JAR文件
  * 用javakey創建數字簽名
  * 在客戶端安裝java plugin並設置對簽名人的信任
  下面分別闡述這三項工作
   用jar工具創建JAR文件
  JAR是Java
  Archive的縮寫Jar工具的主要功能是將文件壓縮和打包JDK提供jar工具的目的主要是
  讓用戶可以將applet中用到的class文件和其他文件壓縮打包到一個文件中當浏覽
  applet時通過一從http的傳輸將它們一並下載到客戶端節省多次下載多個小文件所浪費
  的協議建立時間客戶程序
  在下載了applet的jar文件後就可以運行applet而無需再繼續下載其他文件了Javakey
  在生成數字簽名時要求有關的類都打包在一個jar文件中它生成的數字簽名也會自動添
  加到這個jar文件中去
  使用了jar文件後html中的applet標記略有不同比普通的多出了一個archive項例如
  
    archive=jars/animatorjarjars/supportjar
  width= height=>
  
  
  jar是命令行工具常用的形式有
  jar cf myjarfile *class將當前目錄的所有class文件加到文件myjarfile中去
  jar cvf myjarfile mydir將mydir裡面所有文件加到文件myfile中去
  jar工具的詳細使用方法在JDK的文檔有介紹
   用javakey創建數字簽名
  javakey包括非常豐富的命令和參數能夠為用戶創建密鑰對和證書詳細的說明可以在
  JDK的文檔中找到簡單來說用javakey創建運行帶數字簽名的jar文件主要包括下列步
  驟
   創建signer並設置為信任的格式為
  javakey cs jiewen true
  如果創建時沒有指定true參數新建的signer將是不信任的可以用
  javakey t jiewen true
   創建公鑰/私鑰對由於SUN本身提供對DSA算法的實現所以一般都創建DSA的密鑰對
  
  javakey gk mysigner DSA
  表示密鑰長度為
   創建signer的證書創建證書時需要編輯一個說明文件說明證書的內容創建證書的
  命令行格式為
  javakey gc 說明文件
  說明文件的主要內容為
  issuername=jiewen
  #簽發人名字如果沒有則指定自己的名字
  #issuercert=
  #如果簽發人不是自己則要指定這項
  subjectname=jiewen
  #擁有人的名字
  subjectrealname=Zheng Jiewen
  unit=Nc
  =Scut
  untry=China
  #以上為擁有人的詳細資料
  startdate= Aug
  enddate= Aug
  #有效期
  serialnumber=
  #序列號
  outfile=certcer
  #輸出文件名稱
  
   對JAR文件進行數字簽名需要編輯一個說明文件來說明簽名操作的細節命令行為
  
  javakey gs 說明文件 jar文件
  說明文件的主要內容為
  signer=jiewen
  #指定簽名人
  cert=
  #指定用簽名人的哪個證書
  chain=
  #必須指定但沒有意義
  signaturefile=jiewen
  #簽名存儲在哪個文件裡面
  outfile=outjar
  #輸出的jar文件的文件名
  
   在客戶端創建signer並信任之
  javakey c jiewen true
  
   在客戶端安裝signer的證書命令行為
  javakey ic jiewen jiewencer
  jiewen為signer的名字jiewencer為存放證書的文件
  完成上述操作後客戶端的appletviewer就能夠以信任方式來運行簽名了的applet了這時
  applet獲得的權限和本地的application是一致的
   安裝和配置Java plugin
  Java plugin是一個浏覽器的plugin產品在浏覽器中安裝了這個plugin後用戶就可以在
  浏覽器環境下用SUN的Java虛擬機來運行網頁中的applet了安全公文傳遞系統的客戶程
  序用javakey進行數字簽名必須在SUN的java虛擬機中才能被識別因此必須在客戶端安
  裝java plugin
  Java plugin並不能令普通的含有applet標記的html文件在SUN的java虛擬機中運行applet
  它只認識為它設計的特殊標記為了產生含有這樣特殊標記的文件可以到SUN的站點
  下載專門的轉換器將含有applet標記的html文件轉換為含有java plugin使用的html標
  記的文件
  Java plugin的安裝非常簡單只需下載安裝文件並運行之安裝程序就會自動完成安裝
  工作了但是單純安裝java plugin是無法以信任方式運行客戶程序的還要在java
  plugin的運行環境中設置對signer信任和安裝signer的證書要做到這點必須分兩步進
  行
  首先要知道java plugin的home目錄是什麼方法是運行java plugin的control panel
  打開裡面的Show Java Console選項然後到浏覽器裡面浏覽要運行的applet所在的網
  頁這時就會出現java console窗口裡面有一行是User home directory = 厖就是當
  前的home目錄了
  知道了home目錄後就要把包含有信任信息和簽發人證書的文件拷貝到這個目錄中去如果
  用戶有jdk的話可以用jdk的javakey工具按照前面的說明來設置信任和安裝證書然後
  在jdk的安裝目錄(如果使用windows)或者用戶的home目錄(如果使用unix)找到一個名
  字為identitydbobj的
  文件將這個文件拷貝到java plugin的home目錄中設置的信任就生效了如果用戶沒
  有jdk可以下載安裝jdk來創建這個文件或者可以從別人處拷貝這個identitydbobj文
  件並安裝到自己的java plugin的home目錄中
  
  另外如果是在局域網內也可以在浏覽器內設置安全級別將Applet所在的主機設成可信
  任的站點這樣就可以設置Applet的安全級了IE是可以的別的沒試過
From:http://tw.wingwit.com/Article/program/Java/hx/201311/27023.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.