📄 ciyawasay swanky & shumi 讓applet也可以讀寫檔案-製作signed applet.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0063)http://www.javaworld.com.tw/blog/archives/ciyawasay/000304.html -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>ciyawasay : swanky & shumi: 讓Applet也可以讀寫檔案-製作Signed Applet</TITLE>
<META http-equiv=Content-Type content="text/html; charset=UTF-8"><LINK
href="ciyawasay swanky & shumi 讓Applet也可以讀寫檔案-製作Signed Applet_files/styles-site.css"
type=text/css rel=stylesheet><LINK title=RSS
href="http://www.javaworld.com.tw/blog/ciyawasay/index.rdf"
type=application/rss+xml rel=alternate><LINK title=Home
href="http://www.javaworld.com.tw/blog/ciyawasay/" rel=start><LINK
title=專題現況2004/08/21
href="http://www.javaworld.com.tw/blog/archives/ciyawasay/000303.html"
rel=prev><LINK title=颱風與大樹
href="http://www.javaworld.com.tw/blog/archives/ciyawasay/000341.html" rel=next>
<SCRIPT language=JavaScript><!--function SymError(){ return true;}window.onerror = SymError;var SymRealWinOpen = window.open;function SymWinOpen(url, name, attributes){ return (new Object());}window.open = SymWinOpen;//--></SCRIPT>
<SCRIPT language=javascript type=text/javascript><!--function OpenTrackback (c) { window.open(c, 'trackback', 'width=480,height=480,scrollbars=yes,status=yes');}var HOST = 'www.javaworld.com.tw';// Copyright (c) 1996-1997 Athenia Associates.// http://www.webreference.com/js/// License is granted if and only if this entire// copyright notice is included. By Tomer Shiran.function setCookie (name, value, expires, path, domain, secure) { var curCookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); document.cookie = curCookie;}function getCookie (name) { var prefix = name + '='; var c = document.cookie; var nullstring = ''; var cookieStartIndex = c.indexOf(prefix); if (cookieStartIndex == -1) return nullstring; var cookieEndIndex = c.indexOf(";", cookieStartIndex + prefix.length); if (cookieEndIndex == -1) cookieEndIndex = c.length; return unescape(c.substring(cookieStartIndex + prefix.length, cookieEndIndex));}function deleteCookie (name, path, domain) { if (getCookie(name)) document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT";}function fixDate (date) { var base = new Date(0); var skew = base.getTime(); if (skew > 0) date.setTime(date.getTime() - skew);}function rememberMe (f) { var now = new Date(); fixDate(now); now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000); setCookie('mtcmtauth', f.author.value, now, '', HOST, ''); setCookie('mtcmtmail', f.email.value, now, '', HOST, ''); setCookie('mtcmthome', f.url.value, now, '', HOST, '');}function forgetMe (f) { deleteCookie('mtcmtmail', '', HOST); deleteCookie('mtcmthome', '', HOST); deleteCookie('mtcmtauth', '', HOST); f.email.value = ''; f.author.value = ''; f.url.value = '';}function ReloadTextDiv(){ var NewText = document.getElementById("DynamicText").value; splitText = NewText.split(/\n/); var DivElement = document.getElementById("TextDisplay"); var i = 0; DivElement.innerHTML = ''; for(i = 0; i < splitText.length; i++) { if(splitText[i].length > 0 ) { DivElement.innerHTML += splitText[i] + "<br />"; } }}function ReloadNameDiv(){ var NewName = document.getElementById("DynamicName").value; var DivElement = document.getElementById("NameDisplay"); DivElement.innerHTML = NewName;}//--></SCRIPT>
<!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/"><rdf:Description rdf:about="http://www.javaworld.com.tw/blog/archives/ciyawasay/000304.html" trackback:ping="http://www.javaworld.com.tw/blog/blog-cyokulin.cgi/223" dc:title="讓Applet也可以讀寫檔案-製作Signed Applet" dc:identifier="http://www.javaworld.com.tw/blog/archives/ciyawasay/000304.html" dc:subject="java" dc:description="<![CDATA[<p>Applet由於其sand box的安全機制<br />讓它無法自由自在地存取使用者本機系統上的檔案<br />要讓它能夠跳脫 sand box 的束縛<br />唯一的方式就是把它變成一個Signed Applet<br />這些步驟實在是很繁瑣<br />所以我在這邊整理了一下,分享給大家<br />如果有更方便的方法也請多指教囉~ :)</p><h2>首先</h2>先寫一個Applet,並把它包成JAR檔<br />我這裡寫的是一個可以看圖片的Applet,檔名叫<span class="comment">ImageViewer.jar</span><br />並且準備一個嵌入這個Applet的HTML檔<br />另外,要執行下述keytool與jarsigner指令,必須先確定有把JAVA_HOME/bin加入PATH中<h2>產生key</h2><pre><span class="code">keytool -genkey</span>輸入 keystore 密碼: <span class="comment">swanky</span>您的名字與姓氏為何? [Unknown]: <span class="comment">Hsiao Yu Cheng</span>您的編制單位名稱為何? [Unknown]: <span class="comment">CAI</span>您的組織名稱為何? [Unknown]: <span class="comment">TMTC</span>您所在的城市或地區名稱為何? [Unknown]: <span class="comment">TAIPEI</span>您所在的州及省份名稱為何? [Unknown]: <span class="comment">TAIWAN</span>該單位的二字國碼為何 [Unknown]: <span class="comment">TW</span>N=Hsiao Yu Cheng, OU=CAI, O=TMTC, L=TAIPEI, ST=TAIWAN, C=TW 正確嗎? [否]: <span class="comment">y</span>輸入 <mykey> 的主密碼 (RETURN 如果和 keystore 密碼相同):<span class="comment">(按Enter)</span></pre>你也可以用 <span class="code">keytool -genkey -alias 名稱</span> 來指定key的名稱<h2>察看key</h2><pre><span class="code">keytool -list</span>輸入 keystore 密碼: <span class="comment">swanky</span>Keystore 類型: jksKeystore 提供者: SUN您的 keystore 包含 1 輸入<strong>mykey</strong>, 2004/8/24, keyEntry,認證指紋 (MD5): 17:37:2E:09:C8:C9:40:52:53:4D:F8:CA:D0:F9:EB:1C</pre>其中那個<strong>mykey</strong>就是這個key的名稱<br /><h2>匯出key</h2><pre><span class="code">keytool -export -alias mykey -file swanky.crt</span>輸入 keystore 密碼: <span class="comment">swanky</span>認證儲存在檔案 <swanky.crt></pre><h2>在jar檔簽個章</h2><pre><span class="code">jarsigner ImageViewer.jar mykey</span>Enter Passphrase for keystore: <span class="comment">swanky</span>Warning: The signer certificate will expire within six months.</pre><p>簽完章後,開啟嵌入這個Applet的HTML檔就會出現下面的畫面:<br /><img alt="result.gif" src="http://www.javaworld.com.tw/blog/archives/ciyawasay/20040824/result.gif" width="872" height="604" border="0" /><br />確認後這個Applet就可以讀取本機系統上的檔案了</p><p>執行看看:<a href="http://www.javaworld.com.tw/blog/archives/ciyawasay/20040824/applet.htm" target="_blank">Try!</a><br /><a href="http://www.javaworld.com.tw/blog/archives/ciyawasay/20040824/SignedApplet.zip">Download source file</a></p><p>另外<a href="http://ant.apache.org/" target="_blank">Ant</a>也有相關的<a href="http://ant.apache.org/manual/CoreTasks/genkey.html" target="_blank">GenKey Task</a>與<a href="http://ant.apache.org/manual/CoreTasks/signjar.html" target="_blank">SignJar</a>可以讓你迅速完成以上的動作喔~</p><p>參考文章:<ul> <ol> <li><a href="http://forum.java.sun.com/thread.jsp?forum=63&thread=132769" target="_blank">10 Steps to create a digital certificate and sign an applet</a></li> <li><a href="http://mindprod.com/jgloss/signedapplets.html" target="_blank">Java Glossary : signed Applets</a></li> </ol></ul></p>]]>" dc:creator="swanky" dc:date="2004-08-24T16:46:23+08:00" /></rdf:RDF>--><!--<rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about="http://www.javaworld.com.tw/blog/archives/ciyawasay/000304.html"><dc:title>讓Applet也可以讀寫檔案-製作Signed Applet</dc:title><dc:description><![CDATA[<p>Applet由於其sand box的安全機制<br />讓它無法自由自在地存取使用者本機系統上的檔案<br />要讓它能夠跳脫 sand box 的束縛<br />唯一的方式就是把它變成一個Signed Applet<br />這些步驟實在是很繁瑣<br />所以我在這邊整理了一下,分享給大家<br />如果有更方便的方法也請多指教囉~ :)</p><h2>首先</h2>先寫一個Applet,並把它包成JAR檔<br />我這裡寫的是一個可以看圖片的Applet,檔名叫<span class="comment">ImageViewer.jar</span><br />並且準備一個嵌入這個Applet的HTML檔<br />另外,要執行下述keytool與jarsigner指令,必須先確定有把JAVA_HOME/bin加入PATH中<h2>產生key</h2><pre><span class="code">keytool -genkey</span>輸入 keystore 密碼: <span class="comment">swanky</span>您的名字與姓氏為何? [Unknown]: <span class="comment">Hsiao Yu Cheng</span>您的編制單位名稱為何? [Unknown]: <span class="comment">CAI</span>您的組織名稱為何? [Unknown]: <span class="comment">TMTC</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -