zoukankan      html  css  js  c++  java
  • 常见证书格式和转换

    PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有:
    PKCS#7 Cryptographic Message Syntax Standard
    PKCS#10 Certification Request Standard
    PKCS#12 Personal Information Exchange 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进制形式存放的,不含私钥。
    .pem跟crt/cer的区别是它以Ascii来表示。
    pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式
    p10是证书请求
    p7r是CA对证书请求的回复,只用于导入
    p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。

    一 用openssl创建CA证书的RSA密钥(PEM格式):
    openssl genrsa -des3 -out ca.key 1024

    二用openssl创建CA证书(PEM格式,假如有效期为一年):
    openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config openssl.cnf
    openssl是可以生成DER格式的CA证书的,最好用IE将PEM格式的CA证书转换成DER格式的CA证书。

    三 x509到pfx
    pkcs12 -export –in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx

    四 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 -out cert.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 -inform PEM -out cert.der -outform DER
    八 PEM 到 PKCS#12 的转换,
    openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem

    密钥库文件格式【Keystore】

     格式     :  JKS
     扩展名  : .jks/.ks
     描述     : 【Java Keystore】密钥库的Java实现版本,provider为SUN
     特点     :  密钥库和私钥用不同的密码进行保护
     
     格式     :  JCEKS
     扩展名  :  .jce
     描述     : 【JCE Keystore】密钥库的JCE实现版本,provider为SUN JCE
     特点     :  相对于JKS安全级别更高,保护Keystore私钥时采用TripleDES
     
     格式     :  PKCS12
     扩展名  :  .p12/.pfx
     描述     : 【PKCS #12】个人信息交换语法标准
     特点     :  1、包含私钥、公钥及其证书
                   2、密钥库和私钥用相同密码进行保护
     
     格式     :  BKS
     扩展名  : .bks
     描述     :  Bouncycastle Keystore】密钥库的BC实现版本,provider为BC
     特点     :  基于JCE实现
     
     格式     : UBER
     扩展名  : .ubr
     描述     : 【Bouncycastle UBER Keystore】密钥库的BC更安全实现版本,provider为BC
     
     


    证书文件格式【Certificate】
    格式          :  DER
    扩展名       :  .cer/.crt/.rsa

    描述          : 【ASN .1 DER】用于存放证书
    特点          :  不含私钥、二进制

    格式          :  PKCS7
    扩展名       : .p7b/.p7r
    描述          : 【PKCS #7】加密信息语法标准

    特点          : 1、p7b以树状展示证书链,不含私钥
                      2、p7r为CA对证书请求签名的回复,只能用于导入

    格式          :  CMS
    扩展名       :  .p7c/.p7m/.p7s
    描述          : 【Cryptographic Message Syntax】
    特点          : 1、p7c只保存证书
                      2、p7m:signature with enveloped data
                      3、p7s:时间戳签名文件
     
    格式          :  PEM
    扩展名       : .pem
    描述          : 【Printable Encoded Message】
    特点          : 1、该编码格式在RFC1421中定义,其实PEM是【Privacy-Enhanced Mail】的简写,但他也同样广泛运用于密钥管理
                      2、ASCII文件
                      3、一般基于base 64编码

    格式         :  PKCS10
    扩展名      : .p10/.csr
    描述         : 【PKCS #10】公钥加密标准【Certificate Signing Request】
    特点         :  1、证书签名请求文件
                      2、ASCII文件
                      3、CA签名后以p7r文件回复

    格式         :  SPC
    扩展名      : .pvk/.spc
    描述         : 【Software Publishing Certificate】
    特点         :  微软公司特有的双证书文件格式,经常用于代码签名,其中
                      1、pvk用于保存私钥
                      2、spc用于保存公钥

    ----------------------------- 

    其它:

    PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。常用的有:
               PKCS#7 Cryptographic Message Syntax Standard
               PKCS#10 Certification Request Standard
               PKCS#12 Personal Information Exchange 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 PEM 编码(Base64)的后缀是: .PEM .CER .CRT

    在OpenSSL的工具集中,一般可以使用 -outform -inform 指定 DER 还是 PEM 格式。例如:
    openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER
     
    OpenSSL 中 PEM 到 PKCS#12 的转换,参考命令:
    openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem
     
    OpenSSL 中 PKCS#12 到 PEM 的转换,可参考:
    openssl pkcs12 -in Cert.p12 -out Key.pem
    openssl x509 -in Key.pem -text -out Cert.pem


    http://blog.csdn.net/tsimgsong/archive/2007/12/19/1954404.aspx
    http://zxjgoodboy.blog.sohu.com/71003540.html
    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),同时也支持单个证书,不含私钥。

    http://5233studio.bokee.com/3264715.html
    openssl之pkcs7之3 signed-data内容类型的编码解码- -
    signed内容类型由任意类型的内容和数字签名组成。任何类型的内容能够同时被任意数量的签名者签名。

    签名数据的产生过程有如下几步:

    1. 对于每一个签名者,他用消息摘要算法计算出摘要值 。

    2. 对于每一个签名者,消息摘要和相关的信息用自己的私钥加密。

    3. 对于每一个签名者,把加密的消息摘要和其他的签名者特定信息放入signer_info值中。每个 签名者的证书、crl等也在这一步被收集进来。

    4. 把所有签名者的信息摘要算法、他们的signer_info值和内容一起放进sign值中。

  • 相关阅读:
    Python基础语法 第2节课(数据类型转换、运算符、字符串)
    python基础语法 第5节课 ( if 、 for )
    python基础语法 第4节课 (字典 元组 集合)
    Python基础语法 第3节课 (列表)
    A. Peter and Snow Blower 解析(思維、幾何)
    C. Dima and Salad 解析(思維、DP)
    D. Serval and Rooted Tree (樹狀DP)
    C2. Balanced Removals (Harder) (幾何、思維)
    B. Two Fairs 解析(思維、DFS、組合)
    D. Bash and a Tough Math Puzzle 解析(線段樹、數論)
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/2308743.html
Copyright © 2011-2022 走看看