数字证书含有两部分数据:一部分是对应主体(单位或个人)的信息,另一部分是这个主体所对应的公钥。即数
字证书保存了主体和它的公钥的一一对应关系。同样,数字证书也有可能被假造,如何判定数字证书的内容的真
实性呢?所以,有效的数字证书必须经过权威 的签名,即权威 验证数字证书的内容的真实性,然后再在数
字证书上使用自己的私钥签名(相当于在证书加章确认)。
这样,当用户收到这样的数字证书后,会用相应的权威 的公钥验证该证书的签名因为权威的 的公钥在操
作系统中己经安装。根据非对称加密的原理,如果该证书不是权威 签名的,将不能通过验证,即该证书是不
可靠的。
若通过验证,即可证明此证书含的信息(发信人的公钥和信息)是无误的。于是可以信任该证书,便可以通过该
证书内含的公钥来确认数据确实是发送者发来的。
于是,双方通信时, 把数据的消息摘要用自己的私钥加密(即签名),然后把自己的数字证书和数据及签名后
的消息摘要一起发送给 =,= 处查看 的数字证书,如果 的数字证书是经过权威 验证可靠的,便信任 ,便
可使用 的数字证书中附带的 的公钥解密消息摘要(这一过程同时确认了发送数据的人又可以解密消息摘
要),然后通过解密后的消息摘要验证数据是否正确无误没被修改。
利用这一原理,我们可以突破 * 的 ! 小程序在浏览器中的权限,由于默认的 ! 权限控制不允许它访
问操作系统级的一切。于是我们可以用我们数字证书来给 ! 签名,然后客户端收到该 ! 时,系统会自
动查看给该 ! 签名的数字证书并提供给终端用户判定是否信认该数字证书,如果用户信认,则该 !
有了访问系统的权限。
二、 Java 中的数字证书的生成及维护方法
一、前言
中的 #,!%% 4 可以用来创建数字证书,所有的数字证书是以一条一条采用别名区别的形式存入证书库
的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出
数字证书文件,数字证书文件只包括主体信息和对应的公钥。
每一个证书库是一个文件组成,它有访问密码,在首次创建时,它会自动生成证书库,并要求指定访问证书库的
密码。
在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码。这些信息包括
5448J>5448J5448P5448?5448544,它们的意思是:
%&&%& 名字与姓氏
J>J$Q!%>! 组织单位名称
JJ$Q!% 组织名称