java applet 签名

关键字:jarsigner 找不到证书链

注意:JAVA最好用安装版的,否则可能浏览器找不到applet插件

详见如下代码:

 

1、Applet类

 

 

package com;
import java.applet.*;
import java.awt.*;
import java.io.IOException;
public class HelloApplet extends Applet {
     public void paint(Graphics g) {
            g.drawRect(0, 0, 499, 149);
            g.drawString("Hello World", 5, 70);
     }
     /**
      * 通过applet调用本地的计算器
      */
     public void openApp() {
            String url = "C:\\WINDOWS\\system32\\calc.exe";
            System.out.println("url=" + url);
            try {
                   Runtime.getRuntime().exec(url);
            } catch (IOException e) {
                   e.printStackTrace();
            }
     }
}

 2、调用此applet.jar的JSP页面

 

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>demo</title>
</head>
<body>
      <APPLET CODE="com.HelloApplet.class" id="helloApplet" codebase="." ARCHIVE = "test_applet.jar" WIDTH="500" HEIGHT="150">
      </APPLET>
      <p><a href="#" onclick="openApp()">计算器</a></p>
      <script type="text/javascript">
      function openApp()
      {
        var helloApplet = document.getElementById("helloApplet");
        helloApplet.openApp();
      }
      </script>
</body>
</html>

 

 

可以见到,Applet中调用了windows系统的计算器,基于applet的沙箱机制,它是不可能访问的,要想访问就必须对test_applet.jar进行签名。(惭愧的是,我刚刚重新生成了test_applet.jar,未签名,好像也能访问calc.exe,奇怪了

 

 

1、产生密钥库

 

keytool -genkey -keystore hello.store -alias hello

 

2、产生证书

keytool -export -keystore hello.store -alias hello -file
hello.cert

 

 

3、将密钥库与test_applet.jar绑定

jarsigner -keystore hello.store test_applet.jar  hello

 

4、查看test_applet.jar的签名

 

jarsigner -verify -verbose -certs test_applet.jar

 

refurl:http://hi.baidu.com/dobodo/item/2552fc01d26296d11ff046b9

 

http://blog.csdn.net/jacksonlai/article/details/2833221

 

 

 另外,注意java.policy的位置:

applet调用本地程序时,需要修改java.policy,而这个java.policy的位置在:C:\Program Files\Java\jre6\lib\security,不是C:/Program Files (x86)/Java/jdk1.6.0_35/JRE/的位置,这一点要注意!

 

============================================================

附上applet中产生按钮,然后直接点击此按钮和服务器通讯。

refurl:http://www.cafeaulait.org/course/week6/13.html

 

============================================================

applet调用第三方jar时,都须放在archive属性里,如果有多个,用逗号隔开。

 

Ref url:http://aspnetdb.iteye.com/blog/619844

你可能感兴趣的:(applet)