第三方软件验收测试公司【如何深入理解SSL/TLS证书】
SSL/TLS证书是一个数字文件,它遵循 X.509标准,将一个实体的公钥与该实体的身份(如域名、组织名称等)进行强绑定。绑定关系由一个受信任的第三方证书颁发机构进行数字签名和担保。
SSL/TLS证书就像一本由官方机构(CA)签发的、无法伪造的“数字护照”,里面包含了:
持有者信息(你是谁)\对应的公钥(你的公开联系方式)\签发机构信息(谁为你担保)\数字签名(担保机构的防伪印记)\有效期(这本护照的有效时间)
SSL/TLS证书主要实现规避三个安全风险:
1.加密 ,确保客户端(如浏览器)与服务器(如网站)之间传输的数据是加密的,防止窃听和中间人攻击。实现在TLS握手过程中,使用证书中的公钥来安全地交换一个对称会话密钥,后续所有通信都使用这个对称密钥进行高速加密解密。
身份验证 ,让客户端确信它正在与真正的、预期的服务器通信,而不是一个假冒的钓鱼网站。实现客户端(浏览器/操作系统)内嵌了一个受信任的 根证书颁发机构 列表。当服务器出示其证书时,客户端会使用信任链逐级验证该证书的签名,确保证书是由受信任的CA 颁发的,并且证书中的域名与正在访问的域名匹配。
完整性,确保传输的数据在途中没有被篡改。实现:通过TLS记录协议中的消息认证码(如 HMAC)来实现。每一段加密数据都带有一个MAC值,接收方可以验证该值,任何微小的数据改动都会导致验证失败。
要深入理解证书,必须了解其背后的非对称加密(公钥密码学)。
1. 非对称加密
密钥对:包含一个公钥和一个私钥。
公钥:可以公开给任何人,用于加密数据或验证签名。
私钥:必须被严格保密,存放在安全的服务器上,用于解密数据或创建签名。
用公钥加密的内容,只有对应的私钥才能解密。反之,用私钥签名的内容,可以用对应的公钥验证其真实性。
2. TLS握手流程(以RSA密钥交换为例)
这是证书发挥作用的过程:
ClientHello:客户端向服务器发送支持的最高TLS版本、支持的密码套件列表、一个随机数。
ServerHello:服务器选择双方都支持的TLS版本和密码套件,并发送自己的随机数。
Server Certificate:服务器将其SSL/TLS证书(包含其公钥)发送给客户端。
Server Key Exchange:(可选,在某些密码套件中需要)
ServerHello Done:服务器告知客户端初始握手消息发送完毕。
证书验证:
客户端使用其内置的信任CA列表验证服务器证书的有效性:
签名有效性:证书的签名是否由受信任的CA签发?
域名匹配:证书中的Common Name或Subject Alternative Name是否与访问的域名一致?
时间有效性:证书是否在有效期内?
吊销状态:证书是否已被吊销?(通过CRL或OCSP检查)
Client Key Exchange:客户端生成一个预主密钥,并使用服务器证书中的公钥对其进行加密,发送给服务器。
只有拥有对应私钥的服务器才能解密这个预主密钥。至此,双方都拥有了客户端随机数、服务器随机数和预主密钥,它们通过伪随机函数 生成相同的主密钥和会话密钥。
证书的详细结构和类型
1. X.509 证书结构(ASN.1 编码)
一个标准的 X.509 证书包含以下字段:
版本号
序列号:由CA分配的唯一标识符。
签名算法:CA用来对证书签名的算法(如sha256WithRSAEncryption)。
颁发者:签发该证书的 CA 的可识别名称。
有效期:
Not Before
Not After
主体:证书持有者的可识别名称,最重要的字段是:
Common Name:在旧标准中用于指定域名,但现在已过时。
Subject Alternative Name:现代标准,可以指定多个域名、IP地址等。这是浏览器实际检查的字段。
主体公钥信息:
公钥算法(如 RSA, ECDSA)
主体的公钥本身
扩展:重要的扩展字段,定义了证书的用途和限制。
Key Usage:指定公钥的用途(如数字签名、密钥加密)。
Extended Key Usage:指定证书的用途(如服务器认证、客户端认证、代码签名)。
Basic Constraints:标识该证书是否是CA证书(即能否签发其他证书)。
Subject Key Identifier & Authority Key Identifier:用于构建证书链。
颁发者唯一标识符 / 主体唯一标识符:(可选,很少使用)
证书签名算法:(与“签名算法”字段相同)
证书签名:CA对上述所有字段的哈希值用其私钥进行加密后的结果,是证书防伪的关键。
2. 证书类型和验证的级别
域名验证 - DV
验证内容:CA只验证申请者对域名的控制权(通常通过邮件或 DNS 记录验证)。
特点:颁发速度快、成本低。不验证组织身份。
适用:个人网站、博客、内部系统。浏览器显示锁标志,但无公司名。
组织验证 - OV
验证内容:除了域名控制权,CA还会验证申请组织的真实性和合法性(如检查工商注册信息)。
特点:颁发速度较慢,成本较高。证书的“主体”字段会包含已验证的组织信息。
适用:企业官网、电子商务网站,需要展示企业身份。
扩展验证 - EV
验证内容:最严格的验证标准,遵循官方指南。对组织进行全面的背景审查。
特点:在过去,浏览器地址栏会显示绿色的公司名称,提供最高的用户信任度。但请注意:现代浏览器(如 Chrome, Safari)的UI已不再突出显示绿色公司名,EV证书在 UI上与OV证书差异变小,但其背后的严格验证依然存在。
适用场景:金融机构、大型电商、政府网站等对信任度要求极高的场景。
3. 证书覆盖范围
单域名证书:保护一个完整的FQDN(如 www.zmtests.com)。
通配符证书:保护一个域名及其所有一级子域名(如 *.zmtests.com 覆盖 blog.zmtests.com, api.zmtests.com,但不覆盖 a.b.zmtests.com)。
多域名证书:在一张证书中保护多个完全不同的域名(如 zmtests.com, zmtests.net, shop.zmtests.org)。