- 浏览: 375725 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wangchong_kevin:
放在drawable-hdpi目录下的图片,如果在mdpi分辨 ...
BitmapFactory.Options 解决加载大图片OOM -
darren_nizna:
Netty 实战(精髓) http://gitlore. ...
Java NIO框架Netty教程(一) Hello Netty(转) -
大家来学习:
国内首部NIO+Netty5各种RPC架构实战演练课程观看地址 ...
Java NIO框架Netty教程(一) Hello Netty(转) -
lipeixiaoyu:
[color=red][/color]123
IOS UIView的clipsToBounds属性 -
ramon1989:
问一下,你的SimpleChannelHandler是哪个包下 ...
Java NIO框架Netty教程(一) Hello Netty(转)
最近在研究applet,打算使用applet来开发一个上传文件上传控件,之前因为一直觉得applet的沙箱控制导致applet不能主动的访问客户端的资源,所以也曾因此而放弃.不过最近在研究applet的签名后,有了点收获,可以通过签名jar文档来达到这样的控制策略,下面是我在实际实验过程中的一些心得和体会,跟大家一起分享下.(注:如果转载此文,请注明出处和作者,尊重作者的劳动成果,谢谢)
一、压缩你的class类文件为jar包
1.假设你的需要压缩的类文件存在的包为:cn.mbq.test1和cn.mbq.test2
2.进入你的classes目录,在DOS窗口中执行命令:jar cf mytest.jar cn.mbq.test1 cn.mbq.test2
3.执行命令后你会在当前目录中找到mytest.jar文件,这个就是刚才生成的档案文件。你可以修改它的后缀为rar,然后使用winrar压缩程序打开它查看看是否正确。
二、使用keytool工具生成密匙库
1.keytool工具位于${java_home}/bin目录下;
2.在DOS窗口中执行命令:keytool -genkey -keystore mytest.store -alias mbq
注意:mytest.store 是你的密匙库的名称,可以随意修改,后缀请不要修改!
mbq 为别名,这个也可以改成自己的名称
3.执行上述命令后,DOS窗口中会提示你输入keystore的密码、你的姓名、组织单位等等信息。这里要注意的是输入密码请记住,后面要用到的。在最后,我们输入y确认信息。然后再直接回车设置mbq的主密码和store密码一致即可!
三、使用keytool工具导出签名时用到的证书
1.在DOS窗口中执行命令:keytool -export -keystore mytest.store -alias mbq -file mbq.cert
注意:mytest.store 就是第二步生成的密匙库名称
mbq 也是在第二步中我们指定的别名
mbq.cert 为我们生成的证书的名称,可以自己修改名称,注意后缀不要改
2.命令执行成功,我们会在当前目录下找到一个mbq.cert文件,这个就是我们刚才生成的证书。
四、使用jarsigner工具签名jar压缩文档
1.jarsigner工具位于${java_home}/bin目录下;
2.在当前DOS窗口中执行命令:jarsigner -keystore mytest.store mytest.jar mbq
注意:mytest.store 就是我们在第二步中生成的密匙库名称
mytest.jar 就是我们这第一步压缩的jar文档
mbq 是提供者的名称,我们这里设置为我们的别名
五、创建mytest.policy文件
1.在当前目录下创建一个mytest.policy文件,其内容如下:
keystore"file:mytest.store","JKS";
grantsignedBy"mbq"
{
permission java.io.FilePermission"<<ALLFILES>>","read";
};
2.这个文件的意思就是说让所有由mbq签名的applet都可以对本地的所有文件进行读操作。
六、归档文件
通过上述的五个操作后,我们会在当前目录中找到如下几个文件:mytest.jar-签名后的jar文档、mytest.store-密匙库、mbq.cert-证书、mytest.policy-访问策略文件。如果没有这些文件,那么你的applet数字签名过程就没有正确的完成,请检查上述的操作。以后,如果对打包的java文件做了修改,那么就需要重新签名一次才可以!
七、在网页中运行applet
1.假设你的applet中的主启动类为:cn.test.TestApplet.class;整个前面生成的档案文件、证书啊存储在目录:d:\test\myapplet下;
2.建立一applet_test.html文件存放在任何目录下都可以,然后内容如下:
<HTML>...</HTML><HTML>
<BODY>...</BODY><BODY>
<APPLET CODEBASE="d:\test\myapplet" CODE="cn.test.TestApplet.class" ARCHIVE="mytest.jar" WIDTH=200 HEIGHT=100 name="myapp">
</APPLET>
</BODY>
</HTML>
注意:其中的CODEBASE就是你的类的基础目录,CODE也就是你的APPLET的启动主类,ARCHIVE也就是签名后的JAR文档。
2.然后在IE中打开该html文件,那么会看到IE提示你是否信任该插件,也就是说我们的证书起作用了,然后确定运行后,就可以在页面上看到applet的运行效果了。
但是由于SUN和MS的问题,目前IE并不支持最新的JRE,而是使用MS自己开发的JRE,所以这个也是影响APPLET发展壮大的一个原因。而且正是由于这个原因,SUN的java-plugin技术才会出现。使用SUN的java-plugin技术我们就可以在applet中使用最新的JAVA类库了。由于IE在遇到APPLET标签的时候会调用自己的JRE,但是如果客户机器上安装的JRE不是我们想要的版本,那么就会出错了。所谓java-plugin技术就是利用IE的插件机制来制定我们想要的JRE,我们可以在IE中使用OBJECT标签来调用APPLET,这样就不会引用MS的JRE了,从而达到我们想要的效果,而且java-plugin技术不仅仅支持IE,还支持Navigator等浏览器。不过我们需要编写比较复杂的HTML代码了,但是这一且SUN已经帮我们做到了,呵呵,在JDK1.4或更高的版本中SUN提供了一个HtmlConverter.exe工具来帮助将包含applet标签的html转换成包含OBJECT和EMBED标签的html代码,该工具位于${java_home}/bin目录下,对于1.4以前的版本该工具则是单独提供的,不过现在几乎都是1.4或1.5甚至更高版本的JDK了吧,呵呵。
该工具很简单,是图形化的工具,我们直接运行即可。比如我将上面的包含applet的html转换后(比如我选择只支持IE的),其代码变成了如下:
- 01 <HTML>...</HTML><HTML>
- 02 <BODY>...</BODY><BODY>
- 03 <!--"CONVERTED_APPLET"-->
- 04 <!-- HTML CONVERTER -->
- 05 <object
- 06 classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
- 07 codebase = "http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=5,0,0,3"
- 08 WIDTH = 200 HEIGHT = 100 NAME = "myapp" >
- 09 <PARAM NAME = CODE VALUE = "cn.test.TestApplet.class" >
- 10 <PARAM NAME = CODEBASE VALUE = "d:\test\myapplet" >
- 11 <PARAM NAME = ARCHIVE VALUE = "mytest.jar" >
- 12 <PARAM NAME = NAME VALUE = "myapp" >
- 13 <param name = "type" value = "application/x-java-applet;version=1.5">
- 14 <param name = "scriptable" value = "false">
- 15 </object>
- 16 <!--
- 17 <APPLET CODEBASE="d:\test\myapplet" CODE="cn.test.TestApplet.class" ARCHIVE="mytest.jar"
- 18 WIDTH=200 HEIGHT=100 name="myapp">
- 19 </APPLET>
- 20 -->
- 21 <!--"END_CONVERTED_APPLET"-->
- 22 </BODY>
- 23 </HTML>
01 <HTML>...</HTML><HTML> 02 <BODY>...</BODY><BODY> 03 <!--"CONVERTED_APPLET"--> 04 <!-- HTML CONVERTER --> 05 <object 06 classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 07 codebase = "http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=5,0,0,3" 08 WIDTH = 200 HEIGHT = 100 NAME = "myapp" > 09 <PARAM NAME = CODE VALUE = "cn.test.TestApplet.class" > 10 <PARAM NAME = CODEBASE VALUE = "d:\test\myapplet" > 11 <PARAM NAME = ARCHIVE VALUE = "mytest.jar" > 12 <PARAM NAME = NAME VALUE = "myapp" > 13 <param name = "type" value = "application/x-java-applet;version=1.5"> 14 <param name = "scriptable" value = "false"> 15 </object> 16 <!-- 17 <APPLET CODEBASE="d:\test\myapplet" CODE="cn.test.TestApplet.class" ARCHIVE="mytest.jar" 18 WIDTH=200 HEIGHT=100 name="myapp"> 19 </APPLET> 20 --> 21 <!--"END_CONVERTED_APPLET"--> 22 </BODY> 23 </HTML>
发表评论
-
tomcat下jsp乱码原因(下)
2015-09-16 14:13 692转自:http://blog.csdn.net/jgwei/ ... -
tomcat 下jsp乱码的原因分析(上)
2015-09-16 14:10 664转自 http://blog.csdn.net/jgwei/ ... -
JAVA数据源连接方式汇总
2015-07-23 10:28 825一、问题引入 在java程序中,需要访问数据库,做增删改查 ... -
java初始化块和构造方法的执行顺序
2015-06-09 11:18 639初始化块是ja ... -
Java 内存分配全面浅析
2014-02-20 10:56 759本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更 ... -
java 24小时和12小时制
2013-04-12 11:39 1192Date类,已经很少用了。用Calendar吧。 Calen ... -
BlockingQueue
2013-04-08 12:07 983前言: 在新增的Concu ... -
Java NIO框架Netty教程(四) ChannelBuffer(转)
2013-03-01 10:34 8083在学字符串消息收发(ht ... -
Java NIO框架Netty教程(三) 字符串消息收发(转)
2013-03-01 10:31 6345了解了Netty的基本概念( ... -
Java NIO框架Netty教程(二) 白话概念(转)
2013-03-01 10:20 7822"Hello World"的代 ... -
Java NIO框架Netty教程(一) Hello Netty(转)
2013-03-01 10:16 48802先啰嗦两句,如果你还不知道Netty是做什么的能做什么。那 ... -
Netty Channel 接口名词理解
2013-02-28 18:56 29181.Channel channel 是负责数据读,写的对象 ... -
Java中使用默认的密钥库和算法创建数字证书
2012-11-15 09:42 1174★ 实例说明 本实例使 ... -
keystore提取私钥和证书
2012-11-15 09:41 1968keytool -genkey -alias test -ke ... -
详细讲KeyTool
2012-11-15 09:39 1★ 实例说明 本实例使用J2SDK提供的keytool工具 ... -
http获取文件大小
2012-09-21 10:03 2068URL url = new URL(downloadUrl); ... -
android内存管理
2012-03-16 10:56 1很多开发者都是从j2me或j2ee上过来的,对于内存的使用和理 ... -
Playing Flash FLV Videos in Android applications
2012-03-14 14:37 1649Often when you create an app di ... -
调用Android系统“应用程序信息(Application Info)”界面
2012-02-21 18:45 0“Android系统设置->应 ... -
AsyncTask解决Android UI堵塞问题
2012-02-17 14:54 0AsyncTask解决Android UI堵 ...
相关推荐
本篇文章将深入探讨JavaApplet的数字签名方法以及如何使用打包签名工具JavaAutoPlug.exe来实现这一过程。 首先,理解数字签名的概念是必要的。在计算机安全领域,数字签名是对数据的一种加密验证,类似于纸质文档上...
为了解决这个问题,Java引入了数字签名机制,确保Applet的来源可信且未被篡改。 **数字签名的概念** 数字签名是一种用于验证电子文档完整性和发送者身份的技术。它通过加密算法对数据进行哈希运算,然后使用私钥对...
为了增强用户对Applet的信任并解除这些限制,Java提供了数字签名机制。本教程将详细介绍在Java 2环境下,如何为Applet进行数字签名,以及相关的Java知识。 一、Java Applet与数字签名 1. Java Applet:Java Applet...
签名是软件发布者证明自己身份的一种方式,通过数字签名技术确保代码未被篡改,并且可以让用户确认代码来源。在Java中,对Applet签名意味着使用私钥对Applet的字节码进行加密,然后使用对应的公钥验证。这使得用户...
NULL 博文链接:https://stephen830.iteye.com/blog/254549
是为软件公司和对数字签名有兴趣的人创造一个环境,以便他们能为开放协作系统开发开 源组件。 OpenOCES项目提供了一个有用的组件——OpenSign,为符合标准的浏览器添加数字签 名功能,而不需要额外的插件。这个...
由于安全限制,Applet需要进行数字签名才能在用户的计算机上执行。本文将详细讲解如何使用Ant来打包Applet并添加数字签名。 首先,理解Ant的基本结构。Ant的构建文件通常命名为build.xml,它包含了各种构建任务和...
用户访问这个页面时,浏览器会检查Applet的数字签名,如果签名有效,Applet就会被加载并执行。 总结一下,Ant在打包Applet时的主要步骤包括: 1. 配置Ant构建文件(如`build-applet.xml`),指定源代码位置、输出...
然而,对于需要更多权限的Applet,如读写文件、访问网络等,必须进行数字签名,以证明其来源可信任。 ### JAR文件签名工具:keytool与jarsigner 在Java开发环境中,有两个主要的工具用于处理数字签名:`keytool`和...
总之,Applet签名对于提供安全的Java Web应用程序至关重要,它通过数字签名确保代码的完整性和可信任性。开发者需要理解并正确执行签名流程,以确保其Applet能够在用户端顺利运行并获取必要的权限。同时,用户也应该...
然而,由于安全原因,Applet需要经过严格的验证和安全控制,其中最重要的就是数字签名和客户端认证。 **数字签名**是确保代码完整性和来源可信的关键机制。在Java Applet中,数字签名是一种使用公钥基础设施(PKI)...
本文通过对数字签名技术和Java小程序认证的详细阐述,为网络安全和电子文件传输领域提供了有益的指导和实践案例。 综上所述,Java小程序的数字签名和客户端认证不仅是一种技术手段,更是一种保证网络应用安全性的...
#### 三、使用Java实现数字签名 ##### 3.1 Java程序与数字签名的创建 本节将通过一个简单的Java Applet程序示例来介绍如何创建数字签名。该示例程序的功能是在客户端硬盘上创建一个名为`aaa.txt`的文件,并写入...
对Java Applet和Java Web Start进行数字签名
#### 三、数字签名实现 为了使 Applet 在沙箱环境中安全地访问打印机,需要对其进行数字签名。这通常通过 JDK 的 `keytool` 命令来实现。 ##### 1. 生成密钥对与证书 使用 `keytool -genkey` 命令可以生成一个...
通过本文详细介绍的步骤,开发者可以轻松地为自己的Applet添加数字签名,从而提升应用的安全性和可信度。需要注意的是,在实际操作过程中应严格按照上述流程执行,并注意密钥库和证书的安全管理,以确保整个签名过程...
对打成jar包的applet进行签名的shell脚本,以保证能在页面上运行 1.GenLicense.sh为生成密钥文件的脚本 该脚本执行会生成.store和.cert两个文件 其中keytool命令中 -keypass changeit //签名的密码为"changeit" ...