本站首页    管理页面    写新日志    退出


«may 2026»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
暂无公告...

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:天地无用
日志总数:55
评论数量:43
留言数量:1
访问次数:197547
建立时间:2008年4月17日




使用Java实现CA(二)(转)
软件技术

kkk888929 发表于 2008/4/22 14:09:28

 昨天本来快写完了,结果不小心按了"tab"键,然后向按退格键,结果退到前一个页面了,然后全部都白写了,不爽.只好今天重新写了.     上次我们讲到如何生成密钥对,以及如何将诸如公钥,私钥,证书等这一类安全对象在文件系统和内存之间来回转换.这些是准备开CA的基本功,今天我们讲一下CA的基本原理以及如何使用主体名称结构DN(Distinguish Name)来表示每一个证书中的主体.     一份证书就是一个权威机构对一个主体的身份的确认的证明.即一份证书表示一个权威机构确认了一个主体就是它自己,而不是其它的冒名顶替者.主体可以是一个个人,也可以不是,例如,在需要安全服务的时候,需要为一台网站的服务器颁发证书,这种证书的主体就是一台服务器.签署证书的权威机构就叫做CA,该权威机构本身也是一个主体.权威机构通过对包含有待认证的主体的一系列信息的待签名证书"(TBS,to be signed)进行数字签名来表示该机构对它的认可.一份包含了待认证的主体的相关信息的TBS再加上CA使用自己的私钥进行签名产生的字节流放在一起,就构成了一份标准的X509证书.     一个TBS中包含了以下这些主要信息:     证书的版本,通常是3(X509v3)     证书的序列号,RFC3280中规定,每个CA必须确保它颁发的每一份证书的序列号都是唯一的,并且序列号只能使用非负整数.     签发者(CA)的主体名称,一个DN对象.     证书的有效期,表示方法是两个时间值,表示了该证书从何时开始生效,何时开始作废.     待认证的主体的主体名称,也是一个DN对象.     待认证的主体的公钥,任何安全应用在确认完证书的有效性后,就可以开始使用该主体的公钥与之进行安全通信.     如果是X509v3证书,即版本号是3的话,后面还有一个证书扩展信息字段,可以在证书里面添加一些其它的信息.     下面我们来看一下表示主体的主体名称结构:DN.这个结就构是一个属性的集合.每个属性有属性名称和属性值.它的作用就是用来表示"我是谁",也就是说,这个证书到底是谁颁发给谁的,这个证书对应的公钥是谁拥有的.     通常使用一个字符串来表示DN结构,这种字符串说明了这种结构中的各个属性的类型和值:     C=CN;S=BeiJing;L=BeiJing;O=PKU;OU=ICST;CN=wolfenstein     这里C是国家和地区代码,S和L都是地区代码,S相当于省或者州这样的级别,L相当于城市级别,O是组织机构名称,OU是次级组织机构名称,CN是主体的通用名(common name).在这里,C,S,L等等属性的类型都是相对固定的,例如C一般就是用来表示国家和地区代码,在DN结构中还可以添加一些其它类型的信息,一般也都是以"xxx=xxx"这样来表示的.     下面我们来说明如何在Java语言中构造出一个主体名称对象.     BC Provider中使用X509Name对象来表示DN,构造一个X509Name的步骤大体如下:     先构造两个vector对象,用来表示属性名称和属性值:     Vector oids = new Vector();    Vector attributes = new Vector();     然后在oids这个用来表示属性名称的vector对象中将属性名称一个一个添加进去:     oids.addElement(X509Name.C);     ......     oids.addElement(X509Name.CN);     X509Name对象里面有若干常量,例如上面的X509Name.C.还有X509Name.ST等等,都可以和上面举的例子对应起来.     然后将属性值添加到attributes对象中:     attributes.addElement("CN");     ......     attributes.addElement("Wolfenstein");     最后就可以构造出一个X509Name对象:     X509Name SubjectDN = new X509Name(oids, attributes);     这样,我们的主体名称结构就确立起来了.     下次我们就可以讲关键的部分了,那就是如何用Java程序完成CA最重要的功能,签署证书.


阅读全文(1223) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.039 second(s), page refreshed 144841290 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号