常见的数字证书格式

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、付费专栏及课程。

余额充值