Java2下Applet数字签名
在项目背景中,我正在着手构建一个实时消息队列监控程序,该项目的实施基础是使用APPLET技术。由于涉及到本地资源的访问,因此APPLET需要进行数字签名和认证,以确保安全性和稳定性。我的开发环境是WINDOWS 2000操作系统,应用服务器是WEBLOGIC 6.0,而开发工具则是JBUILDER 4.0。在此过程中,理解服务器端和客户端的文件部署至关重要。
在客户端,我推荐使用JRE 1.3.0_01版本的JAVA运行环境,以替代IE中的JVM。您可以轻松地从SUN公司的JAVA官网下载并安装。安装完成后,我们需要在服务器端调用APPLET的HTML文件中引入JRE,以便在没有预先安装JRE的客户端进行下载。
接下来是具体的操作步骤:
服务器端操作:
1. 将项目所需的所有包文件解压,这里包括WEBLOGIC的JMS包(使用命令jar xf weblogi.jar)。然后,使用JDK的打包命令将编译后的监控程序.class文件和解压后的包一起打包。所有操作均在DOS状态下进行。
2. 创建用于存放密匙的keystore和keys。Keystore用于存储私人密钥和公共密钥证书,这里我们将其别名设为monitor。
3. 使用生成的密钥对jar文件进行签名,以增强其安全性。
4. 将公共密钥导出到cer文件中,这个文件将复制到客户端。
完成以上步骤后,将生成的jar文件、keystore文件和cer文件(在本例中为monitor.jar、monitor.keystore、monitor.cer)复制到服务器目录下。我将其放置在Weblogic 6.0的特定应用目录下。
客户端操作:
1. 在客户端安装JRE 1.3.0_01版本,并将服务器端生成的monitor.cer文件复制到JRE的特定目录下。
2. 将公共密钥导入到JRE的cacerts(默认keystore)中。这一步需要使用keytool命令进行导入。
以上步骤完成后,您的实时消息队列监控程序就可以顺利运行了。通过APPLET的数字签名和认证,确保了程序的安全性和稳定性。对服务器端和客户端文件的正确部署,使得程序的运行更加流畅。修改策略文件:在DOS状态下使用policytool命令
当系统启动policytool工具时,会出现一个界面,类似于图4所示。在这个界面上,选择file菜单的open项,打开指定路径下的java.policy文件。该文件的路径位于“c:program filesjavasoftjre1.3.0_01libsecurity”目录下。
接着,在edit菜单中选择Change keystore,进入新的对话框。在新出现的对话框中,需要输入新的keystore url,格式为“file:/c:/program files /javasoft/jre/1.3.0_01/lib/security/cacerts”。这里需要注意路径中的反斜杠。在new keystore type中,选择JKS,这是cacerts的固定格式。
点击Add Policy Entry后,会在新的对话框中出现。在CodeBase中输入服务器的IP地址和端口号,例如“
完成上述设置后,保存修改。这样,客户端的设置就完成了。当客户端使用IE运行applet程序时,会提示是否对该签名进行授权。选择授权后,相关的包会自动从服务器下载到本地计算机,并且IE会自动启动JRE。
调用applet的html文件:
由于Java 2的安全性限制,原来的html文件已经不能正常使用来调用applet,现在采用的是ActiveX类型的调用方式。针对不同的浏览器,如IE和Netscape,有不同的写法。这里主要为大家展示针对IE的html文件写法。
html文件中包含了applet的调用信息,如classid、 codebase、java_code等参数。其中,classid是applet的标识符,codebase是applet代码所在的URL地址。其他的参数如java_type、ARCHIVE等用于指定applet的其他属性。
值得注意的是,由于applet每次改动都需要重新打包签名,手续相对繁琐。因此在实际应用中,可以将一些会变化的参数放到html文件中,由applet在运行时读取。这样可以简化操作并避免重复签名。
关于客户端设置的复杂性,确实存在一定的困扰。目前的一种解决方案是将已经做好的客户端文件(如cer文件、java.policy和cacerts文件)直接拷贝到客户端。但这也有缺陷,如果客户端已经存在认证信息,可能会丢失。针对这些问题,我们可以共同更好的解决方案。
另外一点优化是在打包的时候,可以将所有涉及安全性的包和源代码打包到一个包中。但如果包非常大,会影响下载速度。JRE也提供了解决方案,可以通过控制面板的JRE控制台进行设置。这部分内容留给读者自行。结语
在Java领域的旅途中,我深感网上关于Java的资料相对匮乏,尤其是中文资源更是稀缺。我怀揣着分享与互助的初衷,希望能将我所掌握的一些小知识与大家分享,以此减少大家在学习过程中的重复努力与无用功。倘若你在Java领域有任何疑惑,或者想要就某个问题展开深入,不妨与我取得联系。我愿与你携手共进,共同提升我们的技术造诣。
我的联系方式是afeilb@163,期待与你的交流。
我亦曾撰写了一系列关于Java的小文章,通过我的文字,希望能将Java的世界生动形象地展现在你们面前。每一篇文章都是我对Java的热爱与执着的见证,字里行间透露出我对技术的热情与追求。我深知技术世界的博大精深,还有许多未知等待我们去。我愿与大家携手前行,共同追寻技术的脚步,不断挑战自我,超越自我。
在技术的道路上,我们永远都有学不完的知识和不断进步的空间。无论是初学者还是资深开发者,我们都应保持一颗谦逊的心,永远保持学习的热情。我坚信,只要我们齐心协力,共同进步,就一定能在Java的道路上越走越远,创造出更多的技术奇迹。
我想说的是,无论你在何处,无论你遇到何种困难,只要你愿意学习,愿意分享,我都愿意与你携手共进。让我们在技术的海洋中遨游,共同追求更高的境界!
结束语至此,愿我们共同进步,共同创造美好的未来!
网络推广网站
- Java2下Applet数字签名
- DropDownList绑定数据表实现两级联动示例
- Node.js实现数据推送
- laravel框架数据库配置及操作数据库示例
- asp.net中文件下载功能的实例代码
- ASP.NET Core MVC 配置全局路由前缀
- 如何手动实现es5中的bind方法详解
- 基于vue 实现表单中password输入的显示与隐藏功能
- tp5框架内使用tp3.2分页的方法分析
- .NET Core中使用HttpClient的正确姿势
- jquery实现标题字体变换的滑动门菜单效果
- Javascript 实现放大镜效果实例详解
- 详解ASP.NET Core 中间件之压缩、缓存
- PHP 微信支付类 demo
- 模块化react-router配置方法详解
- JavaScript面向对象编程小游戏---贪吃蛇代码实例