证书内容提取

blog.liu-kevin.com.pem证书内容查看

$ openssl x509 -in blog.liu-kevin.com.pem -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            0f:81:31:2d:dc:26:74:75:16:95:29:cd:f9:71:ae:e2
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=Encryption Everywhere DV TLS CA - G1
        Validity
            Not Before: Aug 24 00:00:00 2019 GMT
            Not After : Aug 23 12:00:00 2020 GMT
        Subject: CN=blog.liu-kevin.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (2048 bit)
                Modulus (2048 bit):
                    00:a4:b6:f1:72:2a:d2:17:4a:b2:1d:f8:49:c8:86:
                    06:b7:35:e0:16:a9:31:50:7d:6d:97:66:68:3a:0b:
                    e8:c3:b7:1b:69:5d:e6:44:c7:a2:7e:17:ab:84:91:
                    be:10:f5:f2:32:0e:b0:2b:26:a8:0f:a3:14:35:d6:
                    0c:d7:11:81:2c:ed:35:1c:be:1f:90:b7:aa:64:cf:
                    d6:87:31:08:dd:20:ad:83:a3:ea:bb:6c:8c:7e:eb:
                    e2:71:16:4c:35:0b:d5:21:d6:f1:21:3c:aa:14:33:
                    03:b2:80:4e:53:17:eb:73:99:75:59:4a:36:5b:b5:
                    1f:fb:35:88:21:9a:bf:86:04:7a:83:c6:46:01:1e:
                    36:0a:f5:39:97:cb:12:0e:0c:69:01:7b:74:71:c0:
                    fd:50:3f:50:80:bd:91:16:31:e5:02:15:a1:a5:84:
                    02:9c:6a:db:50:27:57:28:dc:4d:33:2d:8c:19:3b:
                    e7:59:95:a0:33:a2:8d:16:96:57:ec:93:7d:1c:8f:
                    a3:4a:77:7e:07:fd:d4:76:a2:d1:e2:12:2e:6c:3e:
                    f6:61:ae:e9:19:f3:d6:23:b5:bc:0a:48:73:8c:43:
                    a3:b2:f9:c3:75:dd:da:f3:74:1a:a7:48:17:e9:02:
                    85:56:a7:83:53:ae:73:3f:e9:a2:e1:a4:0c:a9:46:
                    ee:df
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Authority Key Identifier:
                keyid:55:74:4F:B2:72:4F:F5:60:BA:50:D1:D7:E6:51:5C:9A:01:87:1A:D7

            X509v3 Subject Key Identifier:
                0E:DB:2F:C8:0F:A7:DB:5F:1F:85:64:BE:75:C4:6B:D6:41:D8:E2:69
            X509v3 Subject Alternative Name:
                DNS:blog.liu-kevin.com
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Certificate Policies:
                Policy: 2.16.840.1.114412.1.2
                  CPS: https://www.digicert.com/CPS
                Policy: 2.23.140.1.2.1

            Authority Information Access:
                OCSP - URI:http://ocsp.digicert.com
                CA Issuers - URI:http://cacerts.digicert.com/EncryptionEverywhereDVTLSCA-G1.crt

            X509v3 Basic Constraints:
                CA:FALSE
            1.3.6.1.4.1.11129.2.4.2:
                ......u..K..u.`..Bi....f..~_.r....{.z......l..b......F0D. R..i..|{.iJ*L.^.w.U$n2...)|......
.......V...hH......K.....3..HQX.w.^.s..V...6H}.I.2z.........u..qEX...l..bB.....H0F.!...Dv.dx.e..-.No0..m..jK.D.w.l.qw.!..g.x..Ij}.
    Signature Algorithm: sha256WithRSAEncryption
        90:89:dc:87:aa:59:2f:68:6d:05:12:ba:43:bf:a9:df:e5:38:
        fe:7b:c5:be:35:d3:88:80:e9:bf:2d:f6:f4:e6:04:c9:4b:f1:
        f4:ee:7b:1f:eb:5a:62:ad:66:b3:f2:f8:f9:4c:60:6d:e5:45:
        83:3f:d5:76:ea:cf:f1:2f:c2:f0:a9:c0:9d:3e:10:e6:e5:b4:
        44:33:6f:b5:db:f1:93:99:fd:b2:74:e8:e9:f8:9f:bd:4b:de:
        05:1d:b2:90:ff:b5:6d:56:f4:09:54:8d:3b:60:6f:6f:21:fd:
        94:26:88:ef:8d:7c:c9:ee:3b:0f:18:24:37:8b:64:2a:0d:36:
        da:26:c5:ca:90:a5:ea:3e:08:28:7e:ed:4f:a4:f5:e9:73:7f:
        4d:12:5c:c4:d7:be:fe:22:be:81:75:39:7a:3f:a6:17:a5:5b:
        f5:e1:1d:4d:fe:2d:55:c8:1a:c9:73:63:de:0b:6a:eb:b7:29:
        31:06:87:4d:0e:7e:34:85:51:42:a4:56:fb:b4:aa:b2:ed:1d:
        8c:e2:76:ff:4c:da:3e:1c:4c:bc:08:04:ac:ed:e5:d0:08:4c:
        c0:1a:54:8c:cb:f2:94:9d:ed:15:c2:0b:64:5a:0f:44:7e:19:
        12:6f:ef:e3:76:ad:13:e6:4b:b9:e2:e8:9e:c7:59:19:20:72:
        f5:bd:99:18

签发机构证书EncryptionEverywhereDVTLSCA-G1.crt内容查看

$ openssl x509 -in ~/Downloads/EncryptionEverywhereDVTLSCA-G1.crt -inform der -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            02:79:ac:45:8b:c1:b2:45:ab:f9:80:53:cd:2c:9b:b1
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root CA
        Validity
            Not Before: Nov 27 12:46:10 2017 GMT
            Not After : Nov 27 12:46:10 2027 GMT
        Subject: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=Encryption Everywhere DV TLS CA - G1
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (2048 bit)
                Modulus (2048 bit):
                    00:b3:de:3f:ac:24:69:be:35:77:24:21:ea:62:9c:
                    a0:7a:ad:de:34:48:c5:6e:4c:0e:f7:fd:43:28:8e:
                    47:b5:5f:17:02:ba:e7:a7:ac:d1:41:62:21:be:f8:
                    37:da:51:9e:dc:c5:d5:48:18:cc:31:ae:de:9a:59:
                    54:c7:68:95:bc:61:9b:a7:56:4b:d3:8a:fe:51:5e:
                    84:a3:53:d0:e6:08:f5:aa:a4:e8:5f:94:ed:c0:3a:
                    8f:14:82:fa:20:c1:3d:7c:1d:17:8a:ec:dc:a4:72:
                    a7:76:90:9f:aa:63:a6:9d:72:af:b2:01:e9:8e:33:
                    bf:bd:84:7b:f3:e5:67:fe:ab:2b:a2:27:0b:a5:a9:
                    2b:49:cf:54:e6:11:ee:7f:62:0e:e3:de:d4:4e:08:
                    c5:43:01:1f:f4:f7:df:ed:e1:ca:e1:f7:76:f7:e0:
                    89:65:0e:52:48:dd:a4:c6:f2:c5:7f:97:36:57:b9:
                    b8:42:22:c8:1b:22:e0:8b:db:71:30:a1:f2:bb:a2:
                    7c:22:22:e6:60:d7:91:9a:e7:31:3f:27:c1:f6:02:
                    57:ab:fa:90:37:57:91:b8:06:44:b2:ac:47:8a:6e:
                    71:b2:6d:6c:aa:88:91:41:b1:b9:92:36:b7:ba:5f:
                    7b:02:91:73:99:d6:79:cb:c3:05:97:f7:fa:9d:4c:
                    a4:0f
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                55:74:4F:B2:72:4F:F5:60:BA:50:D1:D7:E6:51:5C:9A:01:87:1A:D7
            X509v3 Authority Key Identifier:
                keyid:03:DE:50:35:56:D1:4C:BB:66:F0:A3:E2:1B:1B:C3:97:B2:3D:D1:55

            X509v3 Key Usage: critical
                Digital Signature, Certificate Sign, CRL Sign
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
            Authority Information Access:
                OCSP - URI:http://ocsp.digicert.com

            X509v3 CRL Distribution Points:
                URI:http://crl3.digicert.com/DigiCertGlobalRootCA.crl

            X509v3 Certificate Policies:
                Policy: 2.16.840.1.114412.1.2
                  CPS: https://www.digicert.com/CPS
                Policy: 2.23.140.1.2.1

    Signature Algorithm: sha256WithRSAEncryption
        2b:71:a9:eb:f6:86:ab:b6:81:66:cc:5f:fe:84:3e:4c:3f:c1:
        4b:05:b7:01:4e:04:4c:af:86:41:fd:a4:17:36:19:91:bc:b9:
        48:5a:c7:74:fa:26:ba:7c:76:1c:1c:d5:89:47:21:1a:8a:1f:
        1a:08:3b:80:75:b4:5b:73:25:40:05:d6:33:4a:f9:2d:4b:d2:
        b5:ca:fc:d9:00:d6:60:d3:da:53:2e:2d:68:24:26:c9:a2:7e:
        54:1f:ba:c3:11:ec:b5:28:a0:3a:54:8d:17:66:ba:be:0e:2b:
        81:ec:62:c5:e8:95:e1:84:81:d3:76:2a:a7:6b:77:4d:e6:47:
        33:d1:12:7e:4b:ac:ef:89:d0:c9:6e:e9:44:67:b3:8f:e4:c2:
        e3:8c:42:6a:00:90:40:ec:f3:36:6c:c4:00:fd:92:9c:2a:c9:
        b0:d1:36:0e:94:55:32:72:fc:27:ac:41:45:d8:e6:3a:c0:b7:
        37:a7:10:b8:ab:91:5d:bc:c1:c9:50:63:0a:a0:00:f2:dd:4b:
        d0:8f:bd:c1:72:5e:ac:b3:f2:12:b8:f2:ac:c2:96:68:11:4b:
        99:f2:bf:00:73:45:e1:98:a1:c0:f1:8e:73:bc:3a:50:77:33:
        05:95:c7:e5:11:73:24:d9:f0:c3:e5:a7:2a:e4:cf:23:41:df:
        9d:51:fc:96

证书内容分析

  • Certificate.Data.Version-版本:证书一共有3个版本号,分别用0、 1、 2编码表示版本1、版本2和版本3。现在大部分的证书都采用版本3的格式。
  • Certificate.Data.Serial Number-序列号:每个CA用来唯一标识其所签发的证书。序列号需要是无序的(无法被预测)而且至少包括20位的熵。
  • Certificate.Data.Signature Algorithm-签名算法:签名算法标识用来指定由CA签发证书时所使用的"签名算法"。算法标识符用来指定CA签发证书时所使用的
  • Certificate.Data.Issuer-颁发者:证书颁发者的可分辨名称( distinguished name, DN),这个字段比较复杂,根据不同的实体会包含许多部分。举例来说, Verisign根证书的可分辨名
    称是/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority;它包括了国家、组织和组织单位三个部分。
  • Certificate.Data.Validity-有效期:证书的有效期包括开始日期和结束日期,在这段时间内证书是有效的。
  • Certificate.Data.Subject-使用者:证书使用者的可分辨名称。
  • Certificate.Data.Subject Public Key Info-公钥:证书的公钥
  • Certificate.Data.X509v3 extensions-扩展信息:版本3引入了证书扩展。扩展信息如下:
    • X509v3 Subject Alternative Name-使用者可选名称:基本信息里的"使用者"字段只能支持与一个主机名进行绑定,无法同时处理多个身份信息。使用者可选名称扩展就是为了替换使用者字段,它支持通过DNS名称、 IP地址和URI来将多个身份绑定在一起。
    • X509v3 Basic Constraints-基础约束:基础约束扩展用来表明证书是否为CA证书,同时通过路径长度( path length)约束字段,来限制二级CA证书路径的深度
    • X509v3 Key Usage-密钥用法:该扩展定义了证书中密钥可以使用的场景,这些场景已经定义好了,可以通过设置来让证书支持某个场景。例如CA证书一般都设置了证书签名者( certificate signer)和CRL签名者( CRL signer)。
    • X509v3 Extended Key Usage-扩展密钥用法:为了更加灵活地支持和限制公钥的使用场景,该扩展可以通过该字段支持更多的场景。
    • X509v3 Certificate Policies-证书策略:该扩展包含了一个或多个策略,每个策略都包括一个OID和可选限定符( qualifier)。限定符一般包括一个URI,从这个URI可以获得完整的策略说明。
    • X509v3 CRL Distribution Points-CRL分发点: 该扩展用来确定证书吊销列表( certificate revocation list, CRL)的LDAP或者HTTP URI地址。每一张证书都至少需要包括CRL或者OCSP吊销信息。
    • Authority Information Access-颁发机构信息访问:该扩展表明如何访问签发CA提供的额外信息和服务,例如:OCSP服务。还有一些证书包含了签发CA的URI地址,有了这个地址,即便服务器返回的证书链中缺少了签发CA的证书,客户端也可以通过下载签发CA重新构建证书链。
    • X509v3 Subject Key Identifier-使用者密钥标识符:该扩展可以用来识别包含特别公钥的证书,一般建议使用公钥本身来建立这个标识符(例如通过散列)。所有的CA证书都必须包含这个扩展,并且它的值要与CA所签发出来的证书上的授权密钥标识符的值一样。
    • X509v3 Authority Key Identifier-授权密钥标识符:该扩展是签发此证书CA的唯一标识符,通常用于在构建证书链时找到颁发者的证书。
    • 其他扩展:除了上述的扩展外,还有名称约束、增量CRL分发点、禁止任意策略、颁发者可选名称、策略限制、策略映射、使用者目录属性、使用者信息访问等
  • Certificate.Signature Algorithm-证书签发机构签名:证书签发机构对证书上述内容的签名算法及证书签发机构对证书上述内容的签名值,该签名值是由签发机构通过private key加密而成,如果通过签发机构证书的public key解密成功,将解密后的值与需要校验证书的散列值进行比较,一致则表示证书可信

证书的格式

证书存储格式

  • DER:Binary (DER) certificate: 包含原始格式的X.509证书,使用DER ASN.1编码。如.crt的证书
  • PEM:ASCII (PEM) certificate(s):包含base64编码过的DER证书,它们以-----BEGIN CERTIFICATE-----开头,以-----ENDCERTIFICATE-----结尾。虽然有些程序可以允许多个证书存在一个文件中,但是一般来说一个文件只有一张证书。由于该种格式的证书容易查看,所以比较常用。
  • PKCS:PKCS#7 certificate(s):RFC 2315定义的一种比较复杂的格式,设计的目的是用于签名和加密数据的传输。一般常见的是.p7b和.p7c扩展名的文件,并且文件里面可以包括所需的整个证书链。Java的密钥管理工具支持这种格式。

Key存储格式

  • DER:Binary (DER) key:包含DER ASN.1编码后的私钥的原始格式。 OpenSSL使用他自己传统的方式创建密钥( SSLeay)格式。还有另外一种不常使用的格式叫作PKCS#8( RFC 5208定义的)。 OpenSSL可以使用pkcs8命令进行PKCS#8格式的转换。
  • ASCII (PEM) key:包括base64编码后的DER密钥和一些元数据信息(例如密码的保存算法)。
  • PKCS#12 (PFX) key and certificate(s):一种可以用来保存服务器私钥和整个证书链的复杂格式,一般以.p12和.pfx扩展名结尾。这类格式常见于Microsoft的产品,但是也用于客户端证书。虽然很久以前PFX表示PKCS#12之前的版本,现在PFX常被用作PKCS#12的代名词,不过你已经很难遇到老版

证书校验

通过签发机构public key解密证书中的签名,并与证书信息的hash值进行比较,一致则说明是可靠的。

通过证书public key加密内容

通过private key解密

证书结构解析参考