65.9K
CodeProject 正在变化。 阅读更多。
Home

如何开发签名的 Applet

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.40/5 (6投票s)

2004年9月1日

CPOL

2分钟阅读

viewsIcon

116796

downloadIcon

388

使用已签名的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中的逐步说明。

要制作测试证书,请按照以下步骤操作

  1. 提取 WriteFile.zip,其中包含所有sign tool组件和用于执行EXEs的两个批处理文件。
  2. 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 
  3. 在这里,您将创建名为WriteFile.pvk私有密钥和证书名称WriteFile.cer,并且您必须记下创建该证书的位置。在这里,我提到c:\test\signedapplet是文件夹。
  4. 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
  5. 在这里,您将类文件作为cabarc的参数提及。我们将创建一个名为WriteFile.cab的CAB文件。
  6. 首先,编译WriteFile.java
  7. 在命令提示符中写入sign,然后输入。
  8. Sign Tool将要求创建私有密钥密码并确认密码。写入“test”和“test”,以及您希望的任何内容,然后单击确定。
  9. 再次输入“test”作为私有密钥密码。
  10. 然后,它将要求您输入发布者密钥密码,写入“test”或您希望的任何内容。
  11. 您将在命令提示符中收到类似以下的消息
    此文件已签名,但未加盖时间戳”- 忽略此警告。
  12. 让我们创建一个HTML文件,如下所示
    <html>
    <body>
    <applet code="WriteFile.class" width =200 height=200>
    <param name="CABBASE" value="WriteFile.cab">
    </applet>
    </body>
    </html> 
  13. 在Internet Explorer中打开它。该文件已签名,您可以在applet中收到以下消息“成功尝试写入”驱动器名称(您提到的位置)。

历史

  • 2004年9月1日:初始帖子
© . All rights reserved.