标签:
关于数字签名的介绍可以参考以上这篇。
这里稍微说一下不对称加密的方式:
用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。
这样比对称加密更安全
跟普通文本加密的原理是一样的。
毋庸置疑,这些都是为了安全性而考虑的。
比如对于applet 来说,它可以保护用户(客户端) 文件和私人数据不被恶意的程序或病毒感染和破坏,鉴别代码提供者的身份。对于开发者而言,通过使用API方法,能够将安全性功能集成到应用程序中,因为API的体系结构能够定义和集成对特定的资源的使用权限、加密、 安全性管理、策略管理,并提供了一些类来管理公钥/密钥对及信任用户群的公钥证书。同时系统管理员、开发者和用户可以使用它提供的工具管理钥匙库,在 JAR文件中生成数字签名、签名的完整性检测、创建和修改策略文件
来看一下 1个Applet 的开发和运行的过程:
在代码的分发端:
(1)开发Java源程序并对其进行编译。
(2)用JAR工具对类文件和资源文件进行封装。
(3)用keytool创建公钥和密钥,生成X。509V1签名证书,输出证书。
(4)通过jarsigner工具用生成的密钥对JAR文件进行数字签名。
在代码的接收端:
(1)用keytool输入证书视其为可信任。
(2)用policytool创建和修改安全性策略配置文件,授权请求的访问权限。
(3)从网络取得字节码,用公钥验证数字签名证书和文档代码的完整性。
(4)验证字节码的合法性,根据策略文件分配相应权限。
(5)执行代码,完成后被垃圾回收器回收内存。
在用公钥验证数字签名证书之前,接收方需要确认公钥自身的可靠性,因此通常情况是提供一个包含公钥的证书而不是公钥自身。1个证书包括:
(1)1个公钥。
(2)1个唯一的名字实体(个人或公司),它是证书的所有者,包含用户名字、公司、组织、城市、地址、国家代码、省份等信息。
(3)数字签名:1个证书被1个分发者的实体签名,保证证书确实包含另1个实体(所有者)的公钥。
(4)分发者的标识名信息。
Applet 开发的实例步骤,
在服务端:
1. 开发完代码, 使用jar 或其他方式达成 XX.jar 档;
2. 为 jar 档创建 keystore 和keys.
.keystore 使用来存放密钥和公钥的文件
keytool -genkey -keystore XX.keystore –alias XX
这里会输入一堆的设定信息
3. 使用产生的密钥对 jar 档进行签名
jarsigner -keystore XX.keystore XX.jar XX
4. 将公钥导入到一个cer 文件中,这个文件会被导入到客户端
keytool -export -keystore XX.keystore -alias XX -file XX.cer
接着这些文件 XX.jar;XX.keystore; XX.cer 放入服务端的目录下。
在客户端:
1. 将服务端生成的 XX.cer 导入到jre 的 lib\security 下。
2. 将公钥导入到 cacerts
keytool -import -alias XX -file XX.cer -keystore cacerts
这儿要你输入的是cacerts的密码,应该是changeit
3. 修改policy策略文件,在dos状态下使用命令 policytool
标签:
原文地址:http://www.cnblogs.com/longshiyVip/p/5376341.html