SSL证书的形式与内容由X.509证书标准所定义,包含3部分内容:证书数据、签名算法以及签名
当CA创建一份证书时,CA会将所有证书数据录入证书,然后通过哈希算法和CA自己的私钥加密过的摘要来生成一个签名,这个签名证明了证书数据里所有内容的有效性。
Certificate Data(证书数据)包含7部分内容
1、Version(版本号)
版本号指定了证书所使用的是哪个版本的X.509证书标准,有3个X.509版本
- 0x0 - x509 version 1 - 现已经不再使用
- 0x1 - x509 version 2 - 很少使用(如果可能,避免使用)
- 0x2 - x509 version 3 - 现在的证书都使用该版本
X.509 v3添加了证书扩展(Certificate Extensions),允许证书添加各种类型的附加信息,这些信息可以提供关于证书用途和限制的更详细的说明。
2、Serial Number(序列号)
- 20 bytes(160 bits)
- 给定CA颁发的证书的唯一标识
- 用于查询证书单独有效性(通过两个协议CRL-Certificate Revocation List和OCSP-Online Certificate Status Protocol)
假设有两家CA,分别是CA X和CA Y,CA X颁发的每张证书的序列号是唯一的,CA Y颁发的每一张证书的序列号也是唯一的,但是两家CA颁发的证书可能存在序列号完全相同的情况,这是可行的,原因在于序列号的用法——通过序列号向颁发该证书的CA提交查询请求(因为每家CA的每张证书都有唯一序列号)。
3、Signature Algorithm(签名算法)
签名算法即用来生成签名的算法,包含hash证书数据的哈希算法(Hashing algorithm)和生成密钥的非对称加密算法(Asymmetry Encryption algorithm)。非对称加密算法生成的私钥给哈希后的摘要进行签名。
相关算法例子:md5WithRSAEncryption、sha1WithRSAEncryption(前两种目前已经被破解了,不安全)、ecdsa-with-SHA256、sha256WithRSAEncryption
4、Validity(有效性)
- 证书有效期
- 由2个值指定----Not Before;Not After
例如本站点:
在上述时间区间之外,浏览器都会提示--证书过期。
5、Subject and Issuer(主体和颁发者)
(1)Sbuject:freessl.cn
主体(Server)是证书要去验明其身份的,比如freessl.cn;
(2)Issuer:CA
颁发者(CA)是识别颁发证书的CA
(3)CA也有证书
该证书也有Subject和Issuer,也称做CA签发自己的证书,即主体和颁发者是同一个(Self-Signed Certificates)。
(4)Subject和Issuer都由DN(Distinguished Name,识别名)指定(之前在讲CSR详解时也有提到),如下图所示:
Reddit完整的DN:C=US,ST=California,L=San Francisco,O=Reddit Inc.,CN=*.reddit.com
Google完整的DN:C=US,ST=California,L=Mountain View,O=Google LLC,CN=*.google.com
① CN ---- Common Name
每张证书都只有一个Common Name(因为浏览器在地址栏中验证的是CN而不是URL);
CN可以包含通配符(*),例如CN=*.google.com,对应地如:www.google.com,maps.google.com和mail.google.com,这个通配符(*)可以是www,可以是maps,也可以是mail,并且这三个域名可以用一张通配符证书(*.google.com)安全保护;但是要注意的是,通配符不匹配这些如:us.mail.google.com(因为这里有两个子域名,而上面的证书只能保护一个子域名)或者google.com(必须要出现子域名*,不能没有)
② OU ---- Organizational Unit
③ O ---- Organization
④ L ---- Locality/City
⑤ ST ---- State
⑥ C ---- Country
以上是在SSL证书中常见的识别名格式,也有其他不是SSL领域的识别名,详情请参考LDAP-RFC4519: Attribute Definitions
我们可以查看本站的证书的Subject和Issuer
此外,需要注意的是:在每个DN中我们不需要提供每一个属性;且最为重要的是Common Name,颁发者和颁发对象都必须要有。
6、Public Key(公钥)
公钥呈现出2个值,Modulus和Exponent
上图的公钥使用的是RSA算法,下图的公钥则是ECDSA算法(Elliptic Curve Digital Signature Algorithm)
7、Extensions(扩展)
证书扩展支出现在X.509 v3扩展中,它为证书添加功能和限制提供了可选字段。
证书扩展解释了为什么证书不会是X.509 v4,因为新的证书特征会直接添加到新的扩展文件中。
参考文献
1、网站:Practical Networking.net:Practical TLS
标签:google,证书,CA,笔记,颁发,SSL,序列号,com From: https://blog.csdn.net/Taki_UP/article/details/141564991