作者NightPrince (shooting star)
看板java
標題Re: [問題] JApplet
時間Sun Mar 19 23:29:07 2006
※ 引述《[email protected] (foolish)》之銘言:
: ※ 引述《[email protected] (shooting star)》之銘言:
: > 既不久前的RMI問題,隨之而來的是 JApplet 問題 囧rz
: > 事情是這樣的,我寫了一個JApplet的程式,想要嵌在網頁上
: > 後來發現會有 access denied 的問題,後來我找到原因是權限的問題
: > 也就是 JApplet預設就有以下的限制:
: > 1. Applet無法對本地電腦做任何的檔案存取
: > 2. Applet無法喚起在本地電腦的任何其他程式
: > 3. Applet除了與下載包含Applet之HTML網頁的電腦通訊外,不會與其他電腦通訊
: > 那請問我該怎樣,才可以突破這個預設的限制呢?
: http://java.sun.com/developer/technicalArticles/Security/Signed/index.html
大感謝!成功了,可以在網頁跑 applet 了
順便說說到底該如何做吧!
誠如我原本說的, applet 有很嚴格的安全限制,所以預設就會有那三項限制
要突破這個限制的作法流程如下:
1. 將此 applet 打包成 jar 檔
2. 使用 keytool 產生 key
3. 使用 jarsigner , sign jar檔,這時要用到剛所產生的 key
4. 寫一下 html tag 即可
現在詳述流程如下:
1. 略 (茶)
2. 指令為:
keytool -genkey [-alias alias-name -keystore keystore-name]
genkey後面那一串不輸入沒關係,不輸入的話 alias-name 預設值就是 mykey
keystore的檔名就會是 .keystore
此時會問你六個問題,至於會問什麼問題,我會結合步驟三給範例指令
這樣比較容易瞭解!
3.指令為:
jarsigner -keystore keystore-name -storepass keystore-password
-keypass key-password jar-file alias-name
注意:預設值是這組KEY的有效日期是6個月
4. 比如說我的 applet 是 SampleApplet.class ,包在 test.jar 檔裡面
<applet code="SampleApplet.class"
archive="test.jar"
width=400 height=400>
</applet>
步驟二跟步驟三的範例指令:
D:\>keytool -genkey
輸入 keystore 密碼: nightprince
您的名字與姓氏為何?
[Unknown]: NightPrince
您的編制單位名稱為何?
[Unknown]: Anonymous
您的組織名稱為何?
[Unknown]: Anonymous
您所在的城市或地區名稱為何?
[Unknown]: Tainan
您所在的州及省份名稱為何?
[Unknown]: Taiwan
該單位的二字國碼為何
[Unknown]: Tw
CN=NightPrince, OU=Anonymous, O=Anonymous, L=Taina, ST=Taiwan, C=Tw 正確嗎?
[否]: y
輸入 <mykey> 的主密碼
(RETURN 如果和 keystore 密碼相同): nightprince
D:\>jarsigner -keystore D:\songClient.keystore -storepass nightprince
-keypass nightprince D:\songClient.jar mykey
Warning: The signer certificate will expire within six months.
順便要注意的是,步驟三的指令需要在一行內完成
也就是不要輸入換行字元即可
使用者只要連入那個網頁都會跳出一個視窗問你要不要信任這個網頁內容
OK的話就可以看到 applet 了 [茶]
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.116.182.158