文章目录
- 前言
- 一、证书
- 1.全域名证书
- 2.泛域名证书
- 二、域名证书的使用
- 1、浏览器请求域名证书流程
- 对全域名证书的请求流程
- 对泛域名证书的请求流程
- ssl client-hello携带server name 报文
- 2、浏览器对证书的验证流程
- 三、域名证书和sni
前言
本文介绍了泛域名证书和全域名证书的区别和使用情况,以及sni的原理。
一、证书
1.全域名证书
域名证书的使用者CN字段和使用者可选名称DNS Name字段没有包含*,该类证书一般是一个证书对应一个网站的ip地址,对应一个或者多个域名(一个证书的DNS Name里面可以包含多个全域名)。
CN字段对应浏览器访问的域名。
https://i-blog.csdnimg.cn/direct/801427ab29b042ff951b5b6921c70539.png" alt="在这里插入图片描述" />
DNS Name字段是对CN字段的补充,DNS Name字段可以包含多个域名,浏览器也可以访问DNS Name里面的域名。
https://i-blog.csdnimg.cn/direct/0a5ad99b1bcb49faa140f3f92f90c731.png" alt="在这里插入图片描述" />
2.泛域名证书
域名证书的使用者CN字段和使用者可选名称DNS Name字段包含*,该类证书可以给多个不同的Ip使用,每个ip又可以对应多个域名。
例如: *.csdn.net 中的 *可以是任意内容,a.csdn.net和b.csdn.net都能返回该证书。
但是a.b.csdn.net就不能匹配 *.csdn.net,他只能匹配 *.b.csdn.net。所以泛域名证书 * 只能包含一级域名。
https://i-blog.csdnimg.cn/direct/750e348c4e5f4e00b841dfefe7bfd3eb.png" alt="在这里插入图片描述" />
https://i-blog.csdnimg.cn/direct/6927d7d3c73c4b1791f167dfc814c594.png" alt="在这里插入图片描述" />
二、域名证书的使用
1、浏览器请求域名证书流程
对全域名证书的请求流程
浏览器将域名封装在ssl client hello报文的扩展项server name中,服务器对域名证书进行匹配,返回域名对应的证书,这就是sni。
https://i-blog.csdnimg.cn/direct/080ead077da5481cbfd18b1e9fc9cd46.png" alt="在这里插入图片描述" />
对泛域名证书的请求流程
不同的ip 可以导入同一个泛域名证书,通过DNS域名解析就能访问指定的网站。泛域名证书能够减少证书的签发,某一类服务都可以只用一个泛域名证书。
https://i-blog.csdnimg.cn/direct/afe16cec7fe345259147bb64380b76b3.png" alt="在这里插入图片描述" />
ssl_clienthelloserver_name__34">ssl client-hello携带server name 报文
https://i-blog.csdnimg.cn/direct/e601e7fcebdf49acb91aead4dc90e9fc.png" alt="在这里插入图片描述" />
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证书。