数字证书介绍

1 什么是数字证书

数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。

因此数字证书又称为数字标识。数字证书对网络用户在计算机网络交流中的信息和数据等以加密或解密的形式保证了信息和数据的完整性和安全性。

2 数字证书长什么样

标准的证书格式如下:

dart 复制代码
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=CN, ST=GuangDong, L=ShenZhen, O=TangTring, CN=SubCA
        Validity
            Not Before: Sep 24 08:22:57 2024 GMT
            Not After : Sep 23 08:22:57 2029 GMT
        Subject: C=CN, ST=GuangDong, L=ShenZhen, O=TangTring, CN=SPNM04_CN
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:e4:5c:fd:94:01:11:47:8e:25:6a:76:42:1d:65:
                    bc:68:dd:52:ba:1b:0e:43:98:c9:f2:27:a9:bb:13:
                    a1:e9:76:43:e3:ac:c7:7e:ab:2e:cf:fc:e6:72:0a:
                    1f:b4:0d:6c:dc:f1:c7:09:b2:09:72:d2:8f:53:6f:
                    65:bf:1a:4d:dc:80:ca:5c:c0:66:be:4c:8a:77:e5:
                    47:95:b6:96:eb:75:83:13:09:95:d6:e8:3c:ac:bf:
                    e3:96:54:b7:c6:16:ea:5c:84:15:9a:c7:9a:22:c5:
                    33:60:97:30:63:1d:37:c0:8a:6d:b4:50:1f:86:99:
                    86:1c:88:0e:bf:9e:db:c6:03:e2:85:90:32:53:2a:
                    7c:72:7c:40:1f:d7:ba:46:88:56:d8:5d:7c:c1:0c:
                    4f:95:4a:ec:53:5f:63:cf:fc:aa:43:b9:f0:23:e2:
                    f9:4c:29:30:95:4f:3b:57:af:51:ff:27:05:f9:4f:
                    15:63:2f:34:92:c6:b3:ad:fd:21:3b:9d:36:b0:c1:
                    6b:12:9c:60:d9:15:85:8f:d2:f1:ee:3c:1e:d3:c9:
                    f0:86:ee:57:36:0c:07:2a:c6:d6:85:aa:96:a2:a4:
                    7b:5c:8f:c1:22:3c:d5:4e:23:47:fa:99:87:fc:5c:
                    90:3d:5f:3d:f4:57:e6:40:c2:a9:7d:6b:47:09:87:
                    10:ef
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Subject Alternative Name:
                DNS:SPNM04_CN.cn, DNS:bbs.SPNM04_CN.cn
            X509v3 Subject Key Identifier:
                C1:B6:B5:FC:8A:8D:8A:21:E9:60:DE:5B:8C:C1:AB:CA:59:44:57:D4
            X509v3 Authority Key Identifier:
                B6:CC:8A:AD:75:53:3A:5A:95:3D:53:20:7B:87:2E:E4:8A:90:63:F9
    Signature Algorithm: sha256WithRSAEncryption
    Signature Value:
        24:2c:17:dc:80:0b:a4:61:20:18:f6:70:0b:72:26:a5:44:41:
        af:8c:76:be:d3:a9:25:e1:26:95:a2:5c:2c:5d:bd:7b:26:00:
        91:29:69:5b:20:4c:09:4a:4d:7a:b6:41:8e:d3:b7:df:7e:05:
        26:af:7f:4a:d4:97:88:10:d9:61:1b:03:1a:b4:48:db:0c:c8:
        fc:ec:58:49:dc:50:c5:8a:1c:22:7e:4a:40:a2:b3:43:b8:f9:
        f6:32:98:6e:31:46:2e:bd:2a:7e:ca:ba:07:2d:c3:9b:5f:14:
        33:2e:99:64:c0:dc:74:d3:a3:10:4c:7d:9f:26:59:5e:d5:a4:
        c7:1a:c2:08:9a:fd:eb:4d:7e:9a:23:78:94:7c:f0:1b:a5:2d:
        81:35:71:84:b1:66:dd:4e:b7:78:f6:79:ed:b6:37:e2:e8:9d:
        89:25:3e:94:76:78:00:20:d7:3f:9d:e1:71:ea:e1:5a:2d:da:
        c5:20:70:65:e5:9d:48:06:91:3a:5f:d3:92:0a:68:f2:84:de:
        a3:3f:11:10:f3:61:be:a8:eb:85:88:a1:95:f8:a5:c7:bf:d9:
        85:a7:8e:5e:38:3f:3c:dc:e3:41:0d:9d:94:c8:d5:3f:c3:33:
        59:21:da:47:03:10:49:78:12:5f:ca:55:9b:e2:54:b9:bd:75:
        92:0d:d7:79

简化版的如下:

3 证书字段介绍

3.1 Version

该字段描述了证书的版本,当证书使用了extension,version值必须为3(值为2)。如果没有使用extension,但使用了UniqueIdentifier,version为2(值为1)或3,如果仅存在基本字段时,version可以为1,2,3。

dart 复制代码
Version: 3 (0x2)

3.2 Serial Number

CA分配给证书的serial number必须是一个正整数。CA分配的证书中的serial number必须是唯一的(使用issuer name和serial number来确定一个唯一的 证书)。serial number最大20字节。

dart 复制代码
Serial Number:
    0e:54:02:f5:ea:9a:7a:8b:9d:ea:26:48:ae:06:74:3f

3.3 signatureAlgorithm

signatureAlgorithm字段包含了CA用来签署该证书的识别码。[RFC3279], [RFC4055]和[RFC4491]给出了支持的签名算法,但也可能采用其他签名算法。

dart 复制代码
Signature Algorithm: sha256WithRSAEncryption

3.4 Issuer

issuer字段表示签名并颁发证书的实体。该字段必须包含非空的DN(distinguished name)。issuer字段为X.501格式的Name[X.501]

dart 复制代码
Issuer: C=CN, ST=GuangDong, L=ShenZhen, O=TangTring, CN=SubCA

3.5 Validity

CA会维护其授权的证书的有效周期。该字段包含2个SEQUENCE的时间数据,一个为起始时间(notBefore),一个为结束时间(notAfter)。两个时间均使用UTCTime或GeneralizedTime编码。

dart 复制代码
 Validity
            Not Before: Sep 24 08:22:57 2024 GMT
            Not After : Sep 23 08:22:57 2029 GMT

3.6 Subject

subject字段表示与存储在subject的public key字段的public key相关的实体。subject可能存在于subject字段和/或 subjectAltName扩展字段中。如果subject为一个CA(即X509v3 Basic Constraints值为TRUE),则subject字段必须为一个与该CA颁发的证书的issuer字段相匹配的非空DN。如果subject为一个CRL issuer(即key usage扩展中cRLSign为TRUE),则subject字段必须为一个与该CRL颁发的CRLs的issuer字段相匹配的非空DN。如果subject的信息仅存在于subjectAltName扩展中(仅于Email地址或URI相关),则subject name必须为非空结构且subjectAltName扩展必须为critical。

dart 复制代码
Subject: C=CN, ST=GuangDong, L=ShenZhen, O=TangTring, CN=SPNM04_CN

3.7 Subject Public Key Info

该字段包含了public key以及key使用的算法。具体可以参见[RFC3279], [RFC4055]以及[RFC4491].

3.8 Extensions

仅在版本为3的时候出现。若出现,该字段为SEQUENCE类型的一个或多个证书扩展。

3.9 signatureValue

signatureValue包含对(ASN.1 DER编码的)tbsCertificate字段的数字签名,此时tbsCertificate作为签名函数的输入。该签名值使用BIT STRING编码。各个签名算法的细节可以参见[RFC3279], [RFC4055]和[RFC4491]。

为了生成该签名,CA需要对tbsCertificate中的字段进行有效性判断。特别地,CA需要对证书中的public key与subject的关联性进行有效性判断。

signatureValue位于证书的末尾,由CA签署生成

4 证书请求过程

1 生成证书签名请求CSR

相关推荐
三流架构师9 小时前
事业单位资源合集(第二辑)
经验分享
自小吃多13 小时前
本地部署大模型避坑实录|Ollama+AnythingLLM 一直加载、CPU 爆满、GPU 闲置问题完整解决
笔记
沃虎Chinty-0313 小时前
CHIP LAN(片式网络变压器)选型决策指南:从需求到量产
经验分享·智能硬件
我命由我1234515 小时前
Windows 操作系统 - Windows 查看架构类型
运维·windows·笔记·学习·系统架构·运维开发·系统
金蕊泛流霞15 小时前
dify安装教程
笔记
IOT.FIVE.NO.117 小时前
Codex Skill 内部结构解析:从 SKILL.md 到 scripts、references、assets
前端·javascript·人工智能·笔记·html
AI精钢18 小时前
把 Markdown 笔记变成可问答的知识图谱:本地 Graph RAG 工具 Kwipu 实测
人工智能·笔记·python·aigc·知识图谱
kobesdu18 小时前
【ROS2实战笔记-15】ros2bag 的深度应用:从数据回放到系统级离线分析
人工智能·笔记·移动机器人·ros2
晓梦林18 小时前
Loooower靶场学习笔记
笔记·学习·安全·web安全