证书应用场景

证书使用
所有的网站都转成https,
https = http + ssl
ssl : Secure Socket Layer, 是一个通讯协议,在通讯过程中,使用了数字证书

https通信详情
所有的通信不再传输公钥,而是传输数字证书。
证书里面包含了公钥,可以由CA机构认证。

1. 网站提供者会自己生成公钥私钥。
– 也可以不自己生成,全部由CA帮助生成

2. 服务器提供者将公钥发送给选择的CA机构

3. CA机构也有自己的私钥公钥。CA使用自己的私钥对服务器的公钥进行签名
– 还有一些其他辅助信息(发行机构,主题,指纹)
– 公钥
– 签名

CA向服务器颁发一个数字证书

4. 当用户访问服务器的时候,服务器会将CA证书发送给客户

5. 在客户的浏览器中,已经随着操作系统预装了知名CA机构的根证书,这里 面包含了CA机构的公钥, 浏览器就会对服务器的证书进行验证

6. 如果验证成功,说明服务器可靠,可以正常通信(小锁头)

7. 如果验证失败,显示(Not Secure), 提示Warning

8. 证书有效时, 浏览器会将自己支持的对称加密算法(des, 3des, aes)发送给服务器, 生成随机秘钥(对称), 使用服务器的公钥,对上述信息加密。发送给服务器

9. 服务器选择一个加密算法,使用对称秘钥加密消息,发送给客户端

10. 双方达成一致,接下来通信转换为对称加密

windows下查看数字证书

#打开证书管理器
Win + R
certmgr.msc

导出der格式数字证书
使用openssl命令查看证书信息

openssl x509 -in <证书名字> -inform der -text //-pubkey  //-noout

证书详情:

openssl x509 -in GlobalSignTest.cer -inform der -text -pubkey

证书信任链
证书直接是可以有信任关系的, 通过一个证书可以证明另一个证书也是真实可信的. 实际上,证书之间的信任关系,是可以嵌套的。比如,C 信任 A1,A1 信任 A2,A2 信任 A3……这个叫做证书的信任链。只要你信任链上的头一个证书,那后续的证书,都是可以信任滴。
假设 C 证书信任 A 和 B;然后 A 信任 A1 和 A2;B 信任 B1 和 B2。则它们之间,构成如下的一个树形关系(一个倒立的树)。

处于最顶上的树根位置的那个证书,就是“**根证书**”。除了根证书,其它证书都要依靠上一级的证书,来证明自己。那谁来证明“根证书”可靠捏?实际上,根证书自己证明自己是可靠滴(或者换句话说,根证书是不需要被证明滴)。

HTTP, HTTPS, SSL/TLS
HTTPS = HTTP + SSL/TLS

早期的版本SSL (3.0之后叫TLS)
现在:TLS
1.0 TLS = 3.0 SSL
1.1 TLS = 3.1 SSL, 目前版本TLS1.2

SSL协议细节(拓展)