1. 初识证书

    在现实生活中,我们经常使用到身份证用来向别人证明我们自己的身份.而在网络世界中,我们也需要用到一个东西去证明通信双方的身份,而不是假冒的.实现的方法有很多种,而证书就是其中一种,个人认为也是最好的一种方式,相比其他方式,比如身份标识符,PSK,公私钥等等.

    目前广泛使用的证书大部分都是X509证书,版本为v3.下面以一张真实的证书为例,说明证书里面内容有哪些.

iOS IKEv2配置证书_iOS IKEv2配置证书

 

2. Certificate Hierarchy部分介绍

   

iOS IKEv2配置证书_证书链_02

    该图其实说明了证书链的结构, 可以看到 www.cisco.com-->HydrantID SSL ICA G2-->QuoVadis Root CA 2这一条完整的证书链. 证书链中除了包含Cisco网站的证书外,还包含了它上级CA的证书,当然也可以包含上上级CA的证书,直到最终Root CA的证书.

     服务器可以发送证书给客户端,也可以发送证书链给客户端,取决于服务器的配置.发送证书链时,中间不能少CA.举例来说,假设一条证书链是Server-->L2 CA-->L1 CA-->Root CA, 我们可以发送Server-->L2 CA证书链,也可以发送Server-->L2 CA-->L1 CA证书链,当然还可以发送Server-->L2 CA-->L1 CA-->Root CA完整的证书链,但是不能发送Server--->L1 CA-->Root CA, Server-->L2 CA-->Root CA证书链.

 

3. Certificate Fields和Field Value部分介绍

    

iOS IKEv2配置证书_openssl_03

    可以看到证书里面的字段很多,有 Version, Serial Number, Certificate Signature Algorithm, Issuer, Validity, Subject, Subject Public Key Info, Extensions, Certificate Signature Value.

    这么多字段,刚开始结束时,我也很犯怵,这么多,都是什么意思. 本文中,我们先说其中比较简单的,余下部分,留给下一篇文档.

    (1)Version

        x509数字证书的版本号,现在基本上都是 v3.

        对应Field Value值为 0x2.

    (2)Serial Number

        该证书的序列号,在CA给不同证书申请者颁发证书时候,一般会给该证书加上证书的编号,类似于身份证号.

        该例中本字段对应的Field Value值为 

52:18:93:9c:92:b3:34:82:32:a5:ac:f8:01:8c:ca:80:11:4c:dd:fa .

    (3)Issuer

        证书的颁发者信息, 即证书的直接上级信息.

        该例中本字段对应的Field Value值为

Issuer: C = US, O = HydrantID (Avalanche Cloud Corporation), CN = HydrantID SSL ICA G2

       可看到信息指明了直接上级CA为HydrantID SSL ICA G2, 与我们在 Certificate Hierarchy 部分看到的一致.如下图

       

iOS IKEv2配置证书_证书链_02

    (4)Validity

        证书的有效期, 在CA签发证书时候, 需要说明该证书的使用时间,是一天,一个月,一年,十年还是多长时间.

        体现在这里的信息,就是证书颁发的不晚于证书的颁发时间,不早于证书颁发时间+持续时间. 以GMT为时区标准.

        该例中本字段对应的Field Value值为

Not Before: Jan  9 19:58:16 2018 GMT
Not After : Jan  9 20:08:00 2020 GMT

    (5)Subject

        证书本身的信息, 我们在制作证书时候,需要先生成CSR,这时候会让我们填写信息,就体现在这.

        该例中本字段对应的Field Value值为

Subject: C = US, ST = CA, L = San Jose, O = "Cisco Systems, Inc.", CN = www.cisco.com

    (6)Subject Public Key Info

        证书的公钥信息, 可以看到证书和公钥是一一对应关系, 证书里面包含了公钥算法和公钥值.

        该例中本字段对应的Field Value值为

Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:9b:ad:a9:b6:59:e3:8d:fe:7c:c6:bb:84:c3:76:
                    51:08:65:ae:e9:8c:8f:33:7e:dc:ef:1f:98:1a:9a:
                    eb:3b:e6:42:b6:3d:4c:77:df:d4:24:e0:36:87:a8:
                    05:9f:94:f0:18:ef:79:6f:2f:32:a0:da:05:58:23:
                    3b:7d:21:8c:4a:16:ea:38:fb:99:0d:9e:48:68:95:
                    01:c0:83:c9:ea:43:74:65:64:d6:c9:85:2e:2f:f0:
                    ca:5a:22:d4:af:ee:4d:24:95:ca:ca:a1:59:90:50:
                    ed:ec:26:67:89:66:d9:41:e4:7a:e8:aa:56:d2:12:
                    50:0e:80:fe:2c:7f:4d:b1:e2:53:bd:83:2e:98:c2:
                    bb:b8:1c:81:25:78:4f:b5:2d:7b:07:7f:a4:11:8e:
                    64:01:31:ab:38:22:12:56:ce:31:dd:74:08:c6:57:
                    1b:81:2f:a7:27:db:81:13:12:bb:d1:f9:2d:fd:6b:
                    1e:d1:79:71:65:53:89:5f:09:84:60:ee:81:c1:84:
                    fd:1f:50:49:c8:c7:08:29:92:19:57:c6:af:b3:42:
                    92:4c:3f:4b:4e:51:ad:f6:ea:86:98:8a:9c:58:28:
                    2f:7f:68:14:13:c2:27:fd:a9:01:42:5d:1e:95:29:
                    f2:da:89:29:3d:e2:ea:08:f7:dc:78:66:fa:33:83:
                    1c:71
                Exponent: 65537 (0x10001)

    (7)Extensions

        下一篇文档再讲

    (8)Certificate Signature Algorithm & Cetificate Signature Value

        下一篇文档再讲