注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

数字证书简介  

2011-09-20 15:37:47|  分类: 数字签名 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
一、前言
证书(Certificate,也称public-key certificate)是用某种签名算法对某些内容(比如公钥)进行数字签名后得到的、可以用来当成信任关系中介的数字凭证。证书发行机构通过发行证书告知证书使用者其公钥(public-key)以及其它一些辅助信息。证书在电子商务安全交易中有着广泛的应用,证书发行机构也称CA(Certificate Authority)。 
如果你对数字签名还不熟悉,请先阅读《数字签名简介》,《Java的数字签名和数字证书
证书的内容和意义如表1所示(这里以通用X .509证书格式为例)。 
表1 证书内容和意义
证书内容意义
Version告诉这个X.509证书是哪个版本的,目前有v1、V2、v3
Serial Number由证书分发机构设置证书的序列号
Signature Algorithm Identifier证书采用什么样的签名算法
Issuer Name证书发行者名,也就是给这个证书签名的机构名
Validity Period证书有效时间范围
Subject Name被证书发行机构签名后的公钥拥有者或实体的名字,采用X.500协议,在Internet上的标志是惟一的。例如:CN=Java,OU=Infosec,O=Infosec Lab,C=CN表示一个subject name。
对证书的详细定义及其应用相关的各种协议,这里不加详细说明,详细细节请查看RFC2450、RFC2510、RFC2511、RFC2527、RFC2528、RFC2559、RFC2560、RFC2585、RFC2587等文档。
二、生成自签证书
        个人或机构可以从信任的证书分发机构申请得到证书,比如说,可以从http://ca.pku.edu.cn 得到一个属于个人的证书。这里是利用JDK的安全工具keytool手动工产生自签证书,所谓自签证书是指证书中的“Subject Name”和“Issuer Name”相同的证书。
获得自签证书可以分为2个步骤:
第一步:产生keystore。
输入以下命令:
keytool -genkey -alias robin -keystore robin.keystore -storepass GL2009 -keypass gl2009 -validity 100 -keyalg RSA -keysize 1024 -sigalg MD5withRSA
关于此的详细内容请参考《Jar文件的数字签名
然后按照提示输入一些信息,如下:
What is your first and last name?
  [Unknown]:  hubing
What is the name of your organizational unit?
  [Unknown]:  GL
What is the name of your organization?
  [Unknown]:  gameloft
What is the name of your City or Locality?
  [Unknown]:  chengdu
What is the name of your State or Province?
  [Unknown]:  shichuan
What is the two-letter country code for this unit?
  [Unknown]:  cn
Is CN=hubing, OU=GL, O=gameloft, L=chengdu, ST=shichuan, C=cn correct?
  [no]:  yes
第二步,把keystor导成自签证书。
输入以下命令:
keytool -exportcert -alias robin  -file robin.crt -keystore robin.keystore -storepass GL2009
这个命令用于把别名为robin是keystore文件robin.keystore导成证书文件robin.crt,其中是keystore文件robin.keystore的密码。
执行该命令就可以在当前目录下生产证书文件robin.crt.
三、读取数字证书文件
我们可以在java代码中通过javax.security.certificate包提供的API进行证书信息的读取。关于此的详细内容,请参阅《读取数字证书
四、使用数字证书
数字证书文件中包含使用者其公钥(public-key),但是其对应的私钥仍然保持在keyStore文件中。因此证书的使用者仍然需要从keyStore文件中读取私钥,以便进行签名。另外数字证书文件所含信息其实只是keyStore文件所含信息的一个子集合,通过KeyStore类的getCertificate(String alias)方法可以返回一个Certificate对象。Certificate是虚类,因此一般返回的是其子类X509Certificate的实例化对象
关于签名中使用数字证书的详细内容,请参照《签名和加密中使用数字证书
  评论这张
 
阅读(2732)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017