您的位置:首页 > 编程语言 > Java开发

Java学习笔记之JAAS-Part2

2014-02-28 20:58 204 查看
消息摘要是数据块的数字指纹;

SecureRandom类产生的随机数,远比由Random类产生的那些数字安全得多

公共密匙和私有密匙对有2个用途:一个用来加密,一个用来认证;

用于加密:别人发给你的消息用公共密匙加密,那么只有你有私有密匙对这个消息进行解密;

用于认证:你用私有密匙对消息进行签名,其他人只有用你的公有密匙才能解密消息,从而确认消息是你发的消息;

DSA算法的过程有3个步骤:

1. 产生一个密匙对;

2. 给消息签名;

3. 对消息进行验证;

证书的核心内容是:

。被认证身份的名字;

。被认证身份的公共密匙;

。对上列信息用私有密匙进行签名;// 这个私有密匙应该是认证机构的私有密匙,这个签名动作的主体是认证机构

// 由此可见,认证机构负责生成证书,并发放证书给消息接受者

// 所以整个过程有2级认证,证书认证(对应证书的公匙和私匙),信息认证(对应信息的公匙和私匙,信息可以指代码,信息等。。。)

所以证书的意义是;

1. (消息接受者)通过某种途径得到认证机构的公共密匙;

2. 用这个公共密匙对证书进行解密,得到被认证身份的名字和公共密匙;

3. 发送消息者(即上面的被认证身份),用自己的私有密匙对要发送的信息进行签名;签名后发送;

4. 接受消息的人(同时也是拥有证书的人,用第2个步骤中得到的公共密匙对该消息签名验证)

keytool -genkey -keystore alice.store -alias alice

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

keytool -printcert -file alice.cert

keytool 用来管理私钥仓库(keystore)和与之相关的X.509证书链(用以验证与私钥对应的公钥),也可以用来管理其他信任实体。

keytool 将密钥和证书储存在一个所谓的密钥仓库中。缺省的密钥仓库实现将密钥仓库实现为一个文件。它用口令来保护私钥。(口令即密码,可设置)

在密钥仓库中有两种不同类型的项:密钥项- 可信任的证书项 -

如果私匙是“DSA”类型,那么缺省的签名算法是"SHA1withDSA",

如果私匙是“RSA”类型,那么缺省的签名算法是“MD5withRSA”,

-》从上列描述推测,所谓的签名是先计算数据块的指纹(消息摘要),然后对指纹进行DSA/RSA加密运算

在生成 DSA 密钥对时,密钥大小的范围必须在 512 到 1024 位之间,且必须是 64 的倍数。缺省的密钥大小为 1024 位。

所谓签名,就是用实体的(签名人,在证书中也称为签发人)私钥对某些数据进行计算。私钥用于计算签名

****自签名证书使用流程:消息发送人(同时担任证书签发人)-Alice,消息接受人-Bob

第一阶段:传递可信任证书

Alice:

1. keytool -genkey -keystore alice.store -alias alice // 创建密匙库,并用别名生成密匙对;

2. keytool -export -keystore alice.store -alias alice -file alice.cert // 导出证书文件;自签名证书

Bob:

可选操作:keytool -printcert -file alice.cert // 打印证书;

1. keytool -import -keystore bob.store -alias alice -file alice.cert // 将证书加入Bob的密匙库中

第二阶段:传递信息

Alice:签名文档:

1. jar cvf document.jar document.txt

2. jarsigner -keystore alice.store document.jar alice // 添加签名;

Alice把文档传送给Bob

Bob: 校验文档:

1. jarsigner -verify -keystore bob.store document.jar // jarsigner自动在bob.store中匹配证书并校验
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: