首页 > 代码库 > PKI证书格式及转换

PKI证书格式及转换

PKI证书格式及转换

20131029

17:47

PKCS 全称是 Public-Key Cryptography Standards ,是由RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有:

PKCS#7 Cryptographic MessageSyntax Standard

PKCS#10 Certification RequestStandard

PKCS#12 Personal InformationExchange Syntax Standard

X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。

PKCS#7 常用的后缀是: .P7B .P7C .SPC

PKCS#12 常用的后缀有: .P12 .PFX

X.509 DER 编码(ASCII)的后缀是:.DER .CER .CRT

X.509 PAM 编码(Base64)的后缀是:.PEM .CER .CRT

.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。

.pemcrt/cer的区别是它以Ascii来表示。

pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式

p10是证书请求

p7rCA对证书请求的回复,只用于导入

p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。

 

openssl创建CA证书的RSA密钥(PEM格式)

openssl genrsa -des3 -outca.key 2048

二用openssl创建CA证书(PEM格式,假如有效期为一年)

openssl req -new -utf8 -x509 -days 365 -key ca.key -out ca.crt

openssl是可以生成DER格式的CA证书的,最好用IEPEM格式的CA证书转换成DER格式的CA证书。

x509pfx

openssl pkcs12 -export  -inkey ca.key in ca.crt -out ca.pfx

注意-inkey-in两个选项的顺序

PEM格式的ca.key转换为Microsoft可以识别的pvk格式。

  pvk -in ca.key -out ca.pvk-nocrypt -topvk

PKCS#12 PEM的转换

openssl pkcs12 -nocerts -nodes-in cert.p12 -out private.pem

验证 openssl pkcs12 -clcerts -nokeys -in cert.p12 -outcert.pem

PFX 格式文件中提取私钥格式文件 (.key)

openssl pkcs12 -in mycert.pfx-nocerts -nodes -out mycert.key

转换 pem 到到 spc

openssl crl2pkcs7 -nocrl-certfile venus.pem  -outform DER -out venus.spc

-outform -inform 指定DER 还是 PAM 格式。例如:

openssl x509 -in Cert.pem -informPEM -out cert.der -outform DER

PEM PKCS#12 的转换,

openssl pkcs12 -export -inCert.pem -out Cert.p12 -inkey key.pem

 

 

密钥库文件格式【Keystore

 格式     :  JKS

 扩展名  : .jks/.ks

 描述     : JavaKeystore】密钥库的Java实现版本,providerSUN

 特点     :  密钥库和私钥用不同的密码进行保护

 

 格式     :  JCEKS

 扩展名  :  .jce

 描述     : JCEKeystore】密钥库的JCE实现版本,providerSUN JCE

 特点     :  相对于JKS安全级别更高,保护Keystore私钥时采用TripleDES

 

 格式     :  PKCS12

 扩展名  :  .p12/.pfx

 描述     : PKCS#12】个人信息交换语法标准

 特点     :  1、包含私钥、公钥及其证书

               2、密钥库和私钥用相同密码进行保护

 

 格式     :  BKS

 扩展名  : .bks

 描述     :  Bouncycastle Keystore】密钥库的BC实现版本,providerBC

 特点     :  基于JCE实现

 

 格式     : UBER

 扩展名  : .ubr

 描述     : BouncycastleUBER Keystore】密钥库的BC更安全实现版本,providerBC

  

 

 

证书文件格式【Certificate

格式          : DER 

扩展名       : .cer/.crt/.rsa

描述          :ASN .1 DER】用于存放证书 

特点          : 不含私钥、二进制

 

格式          : PKCS7 

扩展名       :.p7b/.p7r 

描述          :PKCS #7】加密信息语法标准

特点          :1p7b以树状展示证书链,不含私钥

                 2p7rCA对证书请求签名的回复,只能用于导入

 

格式          : CMS 

扩展名       : .p7c/.p7m/.p7s 

描述          :Cryptographic Message Syntax 

特点          :1p7c只保存证书

                  2p7msignature withenveloped data

                 3p7s:时间戳签名文件

 

格式          : PEM 

扩展名       : .pem 

描述          :Printable Encoded Message 

特点         : 1、该编码格式在RFC1421中定义,其实PEM是【Privacy-Enhanced Mail】的简写,但他也同样广泛运用于密钥管理

                  2ASCII文件

                  3、一般基于base 64编码

 

格式         : PKCS10 

扩展名      : .p10/.csr 

描述         : PKCS #10】公钥加密标准【Certificate Signing Request

特点        :  1、证书签名请求文件

                 2ASCII文件

                 3CA签名后以p7r文件回复

 

格式        :  SPC 

扩展名      : .pvk/.spc 

描述         : Software Publishing Certificate 

特点        :  微软公司特有的双证书文件格式,经常用于代码签名,其中

                 1pvk用于保存私钥

                 2spc用于保存公钥

 

来自 <http://blog.csdn.net/hansel/article/details/4447631>

 

 

 

openssl中有如下后缀名的文件

.key格式:私有的密钥

.crt格式:证书文件,certificate的缩写

.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写

.crl格式:证书吊销列表,Certificate Revocation List的缩写

.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式

 

常用证书协议

x509v3:IETF的证书标准

x.500:目录的标准

SCEP:  简单证书申请协议,用http来进行申请,数据有PKCS#7封装,数据其实格式也是PKCS#10

PKCS#7:  是封装数据的标准,可以放置证书和一些请求信息

PKCS#10:  用于离线证书申请的证书申请的数据格式,注意数据包是使用PKCS#7封装这个数据

PKCS#12:  用于一个单一文件中交换公共和私有对象,就是公钥,私钥和证书,这些信息进行打包,加密放在存储目录中,CISCO放在NVRAM中,用户可以导出,以防证书服务器挂掉可以进行相应恢复。思科是.p12,微软是.pfx

 

来自 <http://wujunfeng.blog.51cto.com/3041/804693>

 

 

 

 

 

# 建立 CA 目录结构

mkdir -p./demoCA/{private,newcerts}

touch./demoCA/index.txt

echo 01 >./demoCA/serial

 

# 生成 CA 的 RSA 密钥对

openssl genrsa -des3-out ./demoCA/private/cakey.pem 2048

 

# 生成 CA 证书请求

openssl req -new-days 365 -key ./demoCA/private/cakey.pem -out careq.pem

 

# 自签发 CA 证书

openssl ca -selfsign-in careq.pem -out ./demoCA/cacert.pem

 

# 以上两步可以合二为一

openssl req -new-x509 -days 365 -key ./demoCA/private/cakey.pem -out ./demoCA/cacert.pem

 

# 生成用户的 RSA 密钥对

openssl genrsa -des3-out userkey.pem

 

# 生成用户证书请求

openssl req -new-days 365 -key userkey.pem -out userreq.pem

 

# 使用 CA 签发用户证书

openssl ca -inuserreq.pem -out usercert.pem

 

来自 <http://rhythm-zju.blog.163.com/blog/static/310042008015115718637/>



来自为知笔记(Wiz)