常见的数字证书格式

常见的数字证书格式

  (2011-05-17 11:29:22)
标签: 

杂谈

分类: CommonTech

cer后缀的证书文件有两种编码-->DER二进制编码或者BASE64编码(也就是.pem) 

p7b一般是证书链,里面包括1到多个证书 
pfx是指以pkcs#12格式存储的证书和相应私钥。 

在Security编程中,有几种典型的密码交换信息文件格式: 
DER-encoded certificate: .cer, .crt 
PEM-encoded message: .pem 
PKCS#12 Personal Information Exchange: .pfx, .p12 
PKCS#10 Certification Request: .p10 
PKCS#7 cert request response: .p7r 
PKCS#7 binary message: .p7b 

.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。 
.pem跟crt/cer的区别是它以Ascii来表示。 
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式 
p10是证书请求 
p7r是CA对证书请求的回复,只用于导入 
p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。 

其中,我介绍如何从p12/pfx文件中提取密钥对及其长度: 
1,首先,读取pfx/p12文件(需要提供保护密码) 
2,通过别名(Alias,注意,所有证书中的信息项都是通过Alias来提取的)提取你想要分析的证书链 
3,再将其转换为一个以X509证书结构体 
4,提取里面的项,如果那你的证书项放在第一位(单一证书),直接读取 x509Certs[0](见下面的代码)这个X509Certificate对象 
5,X509Certificate对象有很多方法,tain198127网友希望读取RSA密钥(公私钥)及其长度(见http://www.matrix.org.cn/thread.shtml?topicId=43786&forumId=55&#reply),那真是太Easy了, 
            X509Certificate keyPairCert = x509Certs[0]; 
            int iKeySize = X509CertUtil.getCertificateKeyLength(keyPairCert); 
            System.out.println("证书密钥算法="+keyPairCert.getPublicKey().getAlgorithm()); 
            System.out.println("证书密钥长度="+iKeySize); 
提取了他所需要的信息。 

X.509定义了两种证书:公钥证书和属性证书   
  PKCS#7和PKCS#12使用的都是公钥证书   
  PKCS#7的SignedData的一种退化形式可以分发公钥证书和CRL   
  一个SignedData可以包含多张公钥证书   
  PKCS#12可以包含公钥证书及其私钥,也可包含整个证书链   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值