• ssl证书 pem der cer crt key pfx 概念 沃通证书组合转换及haproxy配置证书


    证书标准 X.509

    X.509证书的核心是根据RFC 5280编码和/或数字签名的数字文档。

    实际上,术语X.509证书通常是指X5209 v3证书标准的IETF的PKIX证书和CRL配置文件,如RFC 5280中所规定的,通常称为公钥基础结构的 PKIX (X.509)

    百科介绍 https://baike.baidu.com/item/X.509/2817050?fr=aladdin

    编码格式 pem der

    同样的X.509证书,可能有不同的编码格式,常见以下两种编码格式.

    PEM - Privacy Enhanced Mail(隐私增强型电子邮件)  由DER编码的证书再经过Base64编码后的数据文本.

    在"-----BEGIN CERTIFICATE-----" 和 "-----END CERTIFICATE-----"之间存放

    查看PEM格式证书的信息:  openssl x509 -in certificate.pem -text -noout

    Apache和Nginx服务器偏向于使用这种编码格式.但是后缀扩展名可能并不是 .pem, 可以是.cer或者.crt作为扩展名

    pem类型的数据要根据base64编码解码后,得到的数据需要进行增加或裁剪特殊字符-、 、 、begin信息、end信息等。

    DER - Distinguished Encoding Rules(可辨别编码规则)  打开看是二进制格式,不可读.

    查看DER格式证书的信息:  openssl x509 -in certificate.der -inform der -text -noout

    Java和Windows服务器偏向于使用这种编码格式.  这些证书也可以用CER或者CRT作为扩展名。

    der类型的不用在编码解码,直接就是二进制的数据可以直接使用

    证书相关扩展名

    X.509有多种常用的扩展名。不过其中的一些还用于其它用途,就是说具有这个扩展名的文件可能并不是证书,比如说可能只是保存了私钥。
    • .pem              DER编码的证书经过Base64编码后的证书文件
    • .cer,.crt,.der   通常是DER二进制格式的,但Base64编码后也很常见。
    • .p7b,.p7c–PKCS#7SignedData structure without data, just certificate(s) orCRL(s)
    • .p12–PKCS#12格式,包含证书的同时可能还有带密码保护的私钥
    • .pfx– PFX, PKCS#12之前的格式(通常用PKCS#12格式,比如那些由IIS产生的PFX文件)
    • .key              KEY扩展名用于公钥和私钥PKCS#8。 键可以被编码为二进制DER或ASCII PEM。
    PKCS#7是签名或加密数据的格式标准,官方称之为容器。由于证书是可验真的签名数据,所以可以用SignedData结构表述。.P7C文件是退化的SignedData结构,没有包括签名的数据。
    PKCS#12由PFX进化而来的用于交换公共的和私有的对象的标准格式。
     
     

    CRT - certificate证书,常见于*NIX系统,有可能是PEM编码,也有可能是DER编码,多数是PEM编码

    CER - 还是certificate证书,常见于Windows系统,同样可能是PEM编码,也可能是DER编码,多数是DER编码.证书中没有私钥,DER 编码二进制证书文件

    KEY - 通常用来存放一个公钥或者私钥,并非X.509证书, 编码同样可能是PEM,也可能是DER.

    查看KEY的办法:openssl rsa -in mykey.key -text -noout如果是DER格式的话,应该这样:openssl rsa -in mykey.key -text -noout -inform der

    CSR - Certificate Signing Request,即证书签名请求,这个并不是证书,而是向权威证书颁发机构获得签名证书的申请

    其核心内容是一个公钥(附带了一些别的信息),在生成这个申请的时候,同时也会生成一个私钥,私钥要自己保管好(基本就是刚才说的 key文件了).
    查看的办法:openssl req -noout -text -in my.csr (如果是DER格式的话照旧加上-inform der)

    PFX/P12 - predecessor of PKCS#12,包含公钥和私钥的二进制格式证书

           对nginx服务器来说,一般CRT和KEY是分开存放在不同文件中的,但Windows的IIS则将它们存在一个PFX文件中,(因此这个文件包含了证书及私钥)这样会不会不安全?应该不会,PFX通常会有一个"提取密码",你想把里面的东西读取出来的话,它就要求你提供提取密码,PFX使用的时DER编码,如何把PFX转换为PEM编码?
    openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes
    这个时候会提示你输入提取代码. for-iis.pem就是可读的文本.
    生成pfx的命令类似这样:openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out certificate.pfx

    其中CACert.crt是CA(权威证书颁发机构)的根证书,有的话也通过-certfile参数一起带进去.这么看来,PFX其实是个证书密钥库.

    p7b - 以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。.P7C文件是退化的SignedData结构,没有包括签名的数据。

    JKS - 即Java Key Storage,这是Java的专利,跟OpenSSL关系不大,利用Java的一个叫"keytool"的工具,可以将PFX转为JKS,当然 keytool也能直接生成JKS

     证书常见操作

    https://support.ssl.com/index.php?/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them

    证书操作有四种基本类型。查看,转换,组合和提取。

     查看证书

    即使PEM编码的证书是ASCII,它们也不是人类可读的。以下是一些命令,可以让您以人类可读的形式输出证书的内容

    1. 查看pem编码证书

    openssl x509 -in cert.pem -text -noout

    openssl x509 -in cert.cer -text -noout

    openssl x509 -in cert.crt -text -noout

     如果您遇到这个错误,这意味着您正在尝试查看DER编码的证书,并需要使用“查看DER编码证书”中的命令。
    unable to load certificate

    12626:error:0906D06C:PEMroutines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTEDCERTIFICATE

    2. 查看der编码证书

    openssl x509 -in certificate.der -inform der -text -noout

    如果您遇到以下错误,则表示您尝试使用DER编码证书的命令查看PEM编码证书。在“查看PEM编码的证书”中使用命令
    unable to load certificate

    13978:error:0D0680A8:asn1 encodingroutines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306:

    13978:error:0D07803A:asn1 encodingroutines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:380:Type=X509

    转换证书格式

    PEM转为DER openssl x509 -in cert.crt -outform der -out cert.der

    DER转为PEM openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

    (提示:要转换KEY文件也类似,只不过把x509换成rsa,要转CSR的话,把x509换成req...)

    组合证书

    在某些情况下,将多个X.509基础设施组合到单个文件中是有利的。一个常见的例子是将私钥和公钥两者结合到相同的证书中。

    组合密钥和链的最简单的方法是将每个文件转换为PEM编码的证书,然后将每个文件的内容简单地复制到一个新文件中。这适用于组合文件以在Apache中使用的应用程序。

      沃通签发的证书举例

    沃通签发的证书提供 apache nginx 及其他web服务的证书, 其他公司签发的证书基本也是差不多的.

    因为我是要在haproxy上配置ssl证书, 这里做一下证书合成.  nginx apache 直接用crt证书加key私钥这两个文件就可以了.

    组合顺序原则上是先key后证书, 证书顺序是由下级机构证书逐级向上,最后到根root机构证书

    方法1:

    用 for other server 包里的证书文件 domain.key domain.crt issuer.crt cross.crt root.crt 顺序合成一个.pem的证书,粘贴里面的内容,中间不要有空行,放到一个自己创建的pem文件里面。(key文件是生成csr一起生成出来的.key)
     
    cat bszhihui.com.key www.bszhihui.com.crt issuer.crt cross.crt root.crt |tee bszh.pem
     

    方法2:

    用 for other server 包里的证书文件   domain.crt issuer.crt cross.crt root.crt顺序合成一个pem,用生成csr的工具(https://download.wotrus.com/wotrus/wosigncode.exe下载链接)这样生成pfx,然后再用openssl命令行转换pfx至pem,命令行:openssl pkcs12 -in 转换的.pfx -nodes -out 存放路径+.pem
     
     

     

     
    自用博文.不限传播.欢迎留言.共同进步.
  • 相关阅读:
    [LeetCode 1029] Two City Scheduling
    POJ 2342 Anniversary party (树形DP入门)
    Nowcoder 106 C.Professional Manager(统计并查集的个数)
    2018 GDCPC 省赛总结
    CF 977 F. Consecutive Subsequence
    Uva 12325 Zombie's Treasure Chest (贪心,分类讨论)
    Poj 2337 Catenyms(有向图DFS求欧拉通路)
    POJ 1236 Network of Schools (强连通分量缩点求度数)
    POJ 1144 Network (求割点)
    POJ 3310 Caterpillar(图的度的判定)
  • 原文地址:https://www.cnblogs.com/mingetty/p/11024243.html
Copyright © 2020-2023  润新知