当前位置:  技术问答>java相关

数字签名问题,你可以指导我的!谢.......

    来源: 互联网  发布时间:2015-09-15

    本文导语:  1   我在Applet小程序中,需要访问本地数据库资源,所以就作了数字签名,但是不能生成applet.policy文件 2   我在运行HTMLConverter.bat时,总是提示我classpath不正确,classpath应该怎样取得? | 具...

1   我在Applet小程序中,需要访问本地数据库资源,所以就作了数字签名,但是不能生成applet.policy文件
2   我在运行HTMLConverter.bat时,总是提示我classpath不正确,classpath应该怎样取得?

|
具体步骤如下:

服务器端:

1.将程序需要用到的各种包文件全部解压(我这儿要用到WEBLOGIC的JMS包使用命令jar xf weblogicc.jar),然后使用JDK的打包命令将编译好的监控程序.class和刚才解压的包一起打包到一个包中。(前提我已经将监控程序和解开的包都放在同一个目录下了),都是dos状态下的命令,具体命令见jdk1.3(1.2)的bin目录下,命令如下:

jar cvf monitor.jar *.class
此命令生成一个名为monitor.jar的包

2.为刚才创建的包文件(monitor.jar)创建keystore和keys。其中keystore将用来存放密匙(private keys)和公共钥匙的认证,alias别名这儿取为monitor。

命令如下:
keytool -genkey -keystore monitor.keystore –alias monitor

此命令生成了一个名为monitor.keystore的keystore文件,接着这条命令,系统会问你好多问题,比如你的公司名称,你的地址,你要设定的密码等等,都由自己的随便写。

3.使用刚才生成的钥匙来对jar文件进行签名

命令如下:
jarsigner -keystore monitor.keystore monitor.jar monitor
这个命令将对monitor.jar文件进行签名,不会生成新文件。

4.将公共钥匙导入到一个cer文件中,这个cer文件就是要拷贝到客户端的唯一文件


命令如下:
keytool -export -keystore monitor.keystore -alias monitor -file
monitor.cer

此条命令将生成monitor.cer认证文件,当然这几步都有可能问你刚才设置的密码。

这样就完成了服务器端的设置。这时你就可以将jar文件和keystore文件以及cer文件(我这儿是monitor.jar,monitor.keystore,monitor.cer)拷贝到服务器的目录下了,我用的是weblogic6.0,所以就拷贝到C:eawlserver6.0configmydomainapplicationsDefaultWebApp_myserver下的自己建的一个目录下了。

客户端:

1. 首先应该安装jre1.3.0_01,然后将服务器端生成的monitor.cer文件拷贝到jre的特定目录下,我这儿是:
c:program filesjavasoftjre1.3.0_01libsecurity目录下。

2. 将公共钥匙倒入到jre的cacerts(这是jre的默认keystore)

命令如下:
keytool -import -alias monitor -file monitor.cer
-keystore cacerts

注意这儿要你输入的是cacerts的密码,应该是changeit,而不是你自己设定的keystore的密码。

3. 修改policy策略文件,在dos状态下使用命令 policytool系统会自动弹出一个policytool的对话框,如图4所示,在这里面首先选择file菜单的open项,

打开c:program
filesjavasoftjre1.3.0_01libsecurity目录下的java.poliy文件,然
后在edit菜单中选择Change keystore ,在对话框中new keystore url:中输入file:/c:/program files /javasoft/jre/1.3.0_01/lib/security/cacerts,这儿要注意反斜杠,在new keystore type中输入JKS,这是cacerts的固定格式,然后单击Add PolicyEntry,在出现的对话框中CodeBase中输入:

http://URL:7001/*

其中的URL是服务器的IP地址,7001是我的weblogic的端口,如果你是在别的应用服务器上比如说是apache,那端口号就可以省略掉。在SignedBy中输入(别名alias):这儿是Monitor然后单击add peimission按钮,在出现的对话框中permission中选择你想给这个applet的权限,这儿具体有许多权限,读者可以自己找资料看看。我这儿就选用allpeimission,右边的signedBy中输入别名:monitor最后保存,在file菜单的save项。当然你可以看见我已经对多个包实现了签名认证。

这样客户端的设置就完成了。在客户端用ie运行该applet程序时,会询问你是不是对该签名授权,选择授权后,包会自动从服务器下载到本地计算机,而且ie会自动启动jre,在右下栏中可以看见,相当于ie的java控制台。

4.调用applet的html文件

大家都知道由于java2的安全性,对applet的正常调用的html文件已经不能再使用了,而改为ActiveX类型的调用。具体的又分ie和nescape的不同写法,这一些在sun网上都能找到现成的教程。我就不多说了,只是将我的这个小程序为ie写的的html给大家看看。




消息中心实时监控平台











其中我要强调一点,因为applet每一次的改动都需要重新打包签名,手续非常繁琐,所以在具体的实现中要将一些会变化参数放到html文件中来,传到applet中去,这一点网上文章好多,自己去看吧。

另外一个就是有朋友问我,那这样不是太麻烦了,每一个客户端都要进行复杂的dos命令操作,我只能说一目前我的水平只能将一个已经做好的客户端文件cer文件和java.policy以及cacerts文件直接拷贝到客户端,当然这也有缺陷,如果别人的计算机已经有了认证,就会丢失。就这些问题我们可以一起探讨。

另外还有一点优化,就是在打包的时候,我这儿只讲了把所有要用的涉及到安全性的包和源程序到要打到一个包中。这样如果包非常大的话,会非常影响下载的速度,如果可以使用本地计算机的包就好了,这一点jre也做到了,具体的要到控制面板的jre控制台上去设置。这个就留着读者自己去摸索吧。

结束语

我发现网上java相关的资料非常少,中文的更少,所以希望自己能将一些小知识和大家共享,省掉许多重复的无用功。如果大家对这个问题还有不清楚的地方,或者就这问题相进一步展开讨论的,请和我联系,我的信箱是afeilb@163.net。希望我们能共
进步!

这篇文章也采纳了一些别的文章的优点,在此要多谢南京东南大学计算机科学与工程系的金胜昔、步俊杰、吉逸。

|
to:  safenxiao (阿肖)
keytool -genkey -dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US"
      -alias business -keypass kpi135 -keystore C:workingmykeystore
      -storepass ab987c -validity 180
这个180应该是有效期天数了。

to:bluevagrant(蓝色浪人) 
我觉得GUI界面还是很有用的,毕竟这里面的机制是很复杂的,用命令行很麻烦,会搞得人很烦。
欢迎交流!
因为我99年秋搞过一段签名,当时不能上网,资料有很少,就是Java2编程详解上有一点,又刚学Java,甚至连沙箱都不知道是什么,费了我好大劲,只是现在忘的差不多了。

    
 
 

您可能感兴趣的文章:

  • 数字签名,数字签名,数字签名!!
  • 如何让IE认识applet所带的数字签名,而不是让证书仓库认识这个带数字签名的applet,就是说不装jdk也可以在IE里面使用带有签名的applet,详情请进
  • 对applet坐数字签名后,如果重新用jar对applet打包,需要重新做applet数字签名吗?
  • 高手请赐招:数字签名与数字认证的区别,尤其是概念上的区别。谢谢!
  • 关于数字签名的几点疑问??另:csdn的数字签名帖子我都看过,不要介绍给我,我是诚心提问!!
  • Applet应用扩展--数字签名(一) 使用签名的jar包,即可实现访问沙箱之外!
  • 解析数字签名的substring结构(获取数字签名时间)
  • 在线等待,关于数字签名中的javakey
  • 关于数字签名的问题?急!!!
  • applet可以不通过数字签名,通过设置IE直接在本地访问本地文件吗
  • 请教数字签名的一个设计问题
  • Applet中如何达到save,load的功能?(除了数字签名)
  • 数字签名请教!!分数不够可以在加!!
  • 有没有关于数字签名的程序,与银行相互信任的程序
  • 数字签名步骤是什么样的?请具体说明,多谢!!
  • 请问怎么样通过数字签名使得Applet能访问本地文件系统和打印机
  • applet 数字签名
  • 有没有使用java.security类来加密文本(不是数字签名)的程序?可否给我看看.我不会用那个类.最好是用RSA和DES算法的.
  • 重奖:我的数字签名程序无法在IE中显示出来,而且控制台无报错信息和测试信息
  • Java2下Applet数字签名
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • asp.net实现文本的DES加密、MD5散列值、DSA的数字签名
  • Java加密和数字签名编程
  • 想让Applet访问本地硬盘,用数字签名,请问具体步骤怎么实现??急!急!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3