?? java-ca.txt
字號:
1、建立applet的class文件,在html中包含進去。
2、使用keytool-genkey建立一個self-signed簽名。
3、使用keytool-certreq以此簽名生成一個CSR(CertifiateSigningRequest)??(可選)
4、將此CSR遞交CA等機構認證,返回一個.cer文件。??(可選)
5、將此.cer文件導入本地keystore(使用keytool-import)。??(可選)
6、使用jar將要發布的applet打包,并且在html中包含此包文件(archieve=XXX.jar)。
7、使用jarsigner和剛才導入keystore的key簽名此包。
另:要求客戶端必須安裝java-plugin1.1以上的版本。
此方法為javasecurity1.1的安全方式,簽名認證后,applet可以完全訪問本地資源。
如果使用javasecurity1.2方式,則可以配置本地資源訪問權限,但是首先要從keystore導出.cer文件,使用policytool制作java.policy文件,將兩者隨同applet一同發布,在客戶端安裝java.policy文件和.cer證書。具體細節參考javatuorial中javasecurity1.2。
步驟一:(打包class文件)
在命令行中執行以下的語句:jar-cvfMyApplet.jarclass
步驟二:(在網頁中嵌入Applet)
這個網頁的名字叫做FileReaderApplet.html,下面是嵌入Applet部分的寫法:
<APPLET
CODEBASE="."
CODE="jcomponent.FileReaderApplet.class"
ARCHIVE="MyClass.jar"
NAME="TestApplet"
WIDTH=400
HEIGHT=300
HSPACE=0
VSPACE=0
ALIGN=middle
>
</APPLET>
完成這個步驟后,這個Applet已經可以顯示了。但是還不能讀寫本地的文件系統。
步驟三:(生成證書及簽名)
請在命令行環境下執行以下的命令:
1、keytool-genkey-keystorepepper.store-aliaspepper
這個命令用來產生一個密匙庫,執行完畢后應該在c:/admin中產生一個pepper.store的文件,這里的pepper是我自己的名字,你可以對它進行修改。另外在執行命令的時候還有提示你輸入密匙庫的密碼,這里你一定要記住,否則后面要用的時候無法輸入。
2、keytool-export-keystorepepper.store-aliaspepper-filepepper.cert
這個命令用來產生簽名時所要用的證書,同樣這里的pepper也可以換成你自己需要的名字。這個命令執行完后在c:/admin中產生一個pepper.cert的文件。
4、jarsigner-keystorepepper.storeMyApplet.jarpepper
這個命令用上面產生的證書將我們的jar文件進行了簽名。
步驟四:(修改文件)
1、在c:/admin中產生一個名為applet.policy的文件,其內容如下:
keystore"file:c:/admin/pepper.store","JKS";
grantsignedBy"pepper"
{permissionjava.io.FilePermission"<<ALLFILES>>","read";
};
這個文件讓由pepper簽名的Applet擁有本地所有文件的讀權限。
2、修改${java.home}/jre/lib/security目錄下的java.security,找到下面這兩行:
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
在下面添寫第三行
policy.url.3=file:c:/admin/applet.policy
完成這個修改后我們在前面創建的applet.policy文件才有效。
步驟五:(轉換html文件)
運行前面提到的HTMLConvert工具,將原有的FileReaderApplet.html轉化成下面的形式:
<!--"CONVERTED_APPLET"-->
<!--CONVERTERVERSION1.3-->
<OBJECTclassid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
WIDTH=400HEIGHT=300NAME="TestApplet"ALIGN=middleVSPACE=0HSPACE=0codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0">
<PARAMNAME=CODEVALUE="jcomponent.FileReaderApplet.class">
<PARAMNAME=CODEBASEVALUE=".">
<PARAMNAME=ARCHIVEVALUE="MyApplet.jar">
<PARAMNAME=NAMEVALUE="TestApplet">
<PARAMNAME="type"VALUE="application/x-java-applet;version=1.3">
<PARAMNAME="scriptable"VALUE="false">
<COMMENT>
<EMBEDtype="application/x-java-applet;version=1.3"CODE="jcomponent.FileReaderApplet.class"CODEBASE="."ARCHIVE="MyApplet.jar"NAME="TestApplet"WIDTH=400HEIGHT=300ALIGN=middleVSPACE=0HSPACE=0scriptable=falsepluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html"><NOEMBED></COMMENT>
</NOEMBED></EMBED>
</OBJECT>
<!--
<APPLETCODE="jcomponent.FileReaderApplet.class"CODEBASE="."ARCHIVE="MyApplet.jar"WIDTH=400HEIGHT=300NAME="TestApplet"ALIGN=middleVSPACE=0HSPACE=0>
</APPLET>
-->
<!--"END_CONVERTED_APPLET"-->
大家不要看到這里的寫法很復雜,但是這些都是由HTMLConvert工具自動實現的。這個工具有命令行和圖形界面兩種運行方式。
好了,現在這個Applet可以運行讀寫文件的功能了。如果你要考慮在Internet上實現這個Applet,那么你也不需要在所有的客戶端均做上面的步驟,你只需要在你的服務器上創建一個目錄,例如c:/admin,將這個目錄映射為www.testApplet.com/admin。這里的www.testApplet.com是一個假定的網址,將pepper.cert、pepper.store、FileReaderApplet.html、MyApplet.jar以及applet.policy放在這個目錄中,然后修改applet.policy文件如下:
keystore"http://www.testApplet.com/admin/pepper.store","JKS";
grantsignedBy"pepper"
{permissionjava.io.FilePermission"<<ALLFILES>>","read";
};
3、而每個客戶端僅僅需要修改一下它們的${java.home}/jre/lib/security目錄下的java.security文件如下:
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
policy.url.3=http://www.testApplet.com/admin/applet.policy
當然每個客戶端還是需要安裝JRE的,不過現在的瀏覽器安裝時都已經自動安裝了。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -