文章目录
- 前言
- 一、证书
- 1.全域名证书
- 2.泛域名证书
- 二、域名证书的使用
- 1、浏览器请求域名证书流程
- 对全域名证书的请求流程
- 对泛域名证书的请求流程
- ssl client-hello携带server name 报文
- 2、浏览器对证书的验证流程
- 三、域名证书和sni
前言
本文介绍了泛域名证书和全域名证书的区别和使用情况,以及sni的原理。
一、证书
1.全域名证书
域名证书的使用者CN字段和使用者可选名称DNS Name字段没有包含*,该类证书一般是一个证书对应一个网站的ip地址,对应一个或者多个域名(一个证书的DNS Name里面可以包含多个全域名)。
CN字段对应浏览器访问的域名。
DNS Name字段是对CN字段的补充,DNS Name字段可以包含多个域名,浏览器也可以访问DNS Name里面的域名。
2.泛域名证书
域名证书的使用者CN字段和使用者可选名称DNS Name字段包含*,该类证书可以给多个不同的Ip使用,每个ip又可以对应多个域名。
例如: *.csdn.net 中的 *可以是任意内容,a.csdn.net和b.csdn.net都能返回该证书。
但是a.b.csdn.net就不能匹配 *.csdn.net,他只能匹配 *.b.csdn.net。所以泛域名证书 * 只能包含一级域名。
二、域名证书的使用
1、浏览器请求域名证书流程
对全域名证书的请求流程
浏览器将域名封装在ssl client hello报文的扩展项server name中,服务器对域名证书进行匹配,返回域名对应的证书,这就是sni。
对泛域名证书的请求流程
不同的ip 可以导入同一个泛域名证书,通过DNS域名解析就能访问指定的网站。泛域名证书能够减少证书的签发,某一类服务都可以只用一个泛域名证书。
ssl client-hello携带server name 报文
2、浏览器对证书的验证流程
1.证书是否可信
服务器返回证书和证书链,浏览器从自己的内置ca或者从windows等系统的内置ca中通过证书的签发者名称找到对应的根证书,通过证书的公钥对下一级证书进行验签,一直追溯到根证书则证书可信。
2.证书有效性
包括证书是否过期、是否被吊销、密钥长度是否安全、使用的相关算法是否安全。
3.证书域名是否匹配
通过浏览器访问的域名比较CN字段和DNS Name字段看是否匹配。
三、域名证书和sni
“SNI"通常指的是"Server Name Indication”,它是一个扩展的TLS/SSL协议功能,用于告知服务器客户端想要连接到哪个特定网站。这对于在同一个IP地址上托管多个安全网站(具有不同的主机名)是必要的。
SNI解决了在同一IP地址上使用多个SSL证书的问题,允许用户通过一个IP地址访问多个加密的HTTP服务。没有SNI,每个域名都需要一个专用的IP地址才能拥有自己的SSL证书。