如何开发签名的 Applet






2.40/5 (6投票s)
使用已签名的applet读/写本地机器文件系统
引言
本文中的信息有助于回答以下问题
- 开发一个已签名的applet需要哪些工具?
- 如何使用Microsoft Sign Tool制作测试证书?
- 如何使用已签名的applet读/写本地机器文件系统?
摘要
本文展示了如何使用Microsoft Sign Tool开发一个已签名的applet。
通过applet读写文件系统是可能的,前提是您已使用Microsoft Sign Tool为Internet Explorer或Netscape Sign Tool为Netscape签名该applet。我在这里展示的例子只是一个创建测试证书的例子。如果您打算在Web上发布您的applet,则不推荐这样做。在这种情况下,您将必须从Verisign或Thawte证书获取证书以进行发布。除非您的applet中的内容不安全,否则它可能会损坏自身或损坏它正在播放的其他资源。
所需工具
- Microsoft Internet Explorer 3.0或升级版本
- Microsoft Sign Tool,它包含以下EXEs和DLLs
- makecert.exe
- signcode.exe
- setreg.exe
- ChkTrust.exe
- cert2spc.exe
- cabarc.exe
- javasign.dll
- signer.dll
- com package
更多信息
第一部分:使用Applet的Java Applet读/写文件系统
第一部分提供了读/写applet的源代码。
import java.applet.*;
import com.ms.security.*;
import java.awt.*;
import java.io.*;
import java.lang.*;
import java.applet.*;
public class WriteFile extends Applet
{
String myFile = "G:\\test.foo";
File f = new File(myFile);
DataOutputStream dos;
public void paint(Graphics g)
{
try
{
//create the output stream
dos = new DataOutputStream(new BufferedOutputStream
(new FileOutputStream(myFile),128));
//write chars to that file
dos.writeChars("Cats can hypnotize you when you least expect it\n");
//flush stream to that file
dos.flush();
g.drawString("Successful attempt to write to " + myFile, 10, 10);
}
catch (SecurityException e)
{
g.drawString("writeFile: caught security exception", 10, 10);
}catch (IOException ioe)
{
g.drawString("writeFile: caught i/o exception", 10, 10);
}
}
}
第二部分:如何使用Microsoft Sign Tool制作测试证书
第二部分提供了关于如何制作测试证书并将其嵌入HTML中的applet中的逐步说明。
要制作测试证书,请按照以下步骤操作
- 提取 WriteFile.zip,其中包含所有sign tool组件和用于执行EXEs的两个批处理文件。
- sign.bat文件看起来像这样
makecert /sv "WriteFile.pvk" /n "CN=WriteFile" WriteFile.cer cert2spc WriteFile.cer WriteFile.spc setreg 1 true appsign c:\Test\SignedApplet\WriteFile WriteFile low
- 在这里,您将创建名为WriteFile.pvk的
私有
密钥和证书名称WriteFile.cer,并且您必须记下创建该证书的位置。在这里,我提到c:\test\signedapplet是文件夹。 - appsign.bat看起来像这样
ECHO OFF SET CERT_FILE="c:\Test\SignedApplet\WriteFile.spc" SET KEY_FILE="c:\Test\SignedApplet\WriteFile.pvk" cabarc -s 6144 N WriteFile.cab WriteFile.class signcode -j javasign.dll -jp %3 -spc %CERT_FILE% -v %KEY_FILE% -n %2 %1.cab
- 在这里,您将类文件作为
cabarc
的参数提及。我们将创建一个名为WriteFile.cab的CAB文件。 - 首先,编译WriteFile.java。
- 在命令提示符中写入sign,然后输入。
- Sign Tool将要求创建
私有
密钥密码并确认密码。写入“test”和“test”,以及您希望的任何内容,然后单击确定。 - 再次输入“
test
”作为私有
密钥密码。 - 然后,它将要求您输入发布者密钥密码,写入“
test
”或您希望的任何内容。 - 您将在命令提示符中收到类似以下的消息
“此文件已签名,但未加盖时间戳
”- 忽略此警告。 - 让我们创建一个HTML文件,如下所示
<html> <body> <applet code="WriteFile.class" width =200 height=200> <param name="CABBASE" value="WriteFile.cab"> </applet> </body> </html>
- 在Internet Explorer中打开它。该文件已签名,您可以在applet中收到以下消息“
成功尝试写入
”驱动器名称(您提到的位置)。
历史
- 2004年9月1日:初始帖子