Https协议过程

有些概率一直都不是很清晰,列举下方便查看

CA证书:

1、什么是CA证书

首先,有一个权威的证书签发机构,称为CA——全球就那么几个公司比较权威啦,这个机构,先用RSA产生一对公私钥。 私钥自己留着藏起来,你要是能偷到手就厉害了。
申请者(服务端)生成一对公钥私钥对,提供公钥、组织、域名等信息向 CA 提出申请证书。在 CA 判明申请者的身份后,便为你分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并用CA私钥为之签名后,便形成证书发给申请者(服务端)。

2、服务器证书:明文+签名

(1) 有效期:Validity有效期包含生效时间和失效时间,是一个时间区间;
(2) 公钥信息:Subject Public Key Info,包括公钥的加密算法和公钥内容;
(3) Fingerprints信息:fingerprints用于验证证书的完整性,也就是说确保证书没有被修改过。 其原理就是在发布证书时,发布者根据指纹算法(SHA-1、SHA-256等)计算整个证书的hash值(指纹)并和证书放在一起,client在打开证书时,自己也根据指纹算法计算一下证书的hash值(指纹),如果和刚开始的值相同,则说明证书未被修改过;如果hash值不一致,则表明证书内容被篡改过;
(4) 证书的签名:Certificate Signature Value和Certificate Signature Algorithm,对证书签名所使用的Hash算法和Hash值;
(5) 签发该证书的CA机构Issuer;
(6) 该证书是签发给哪个组织/公司信息Subject;
(7) 证书版本Version、证书序列号Serial Number以及Extensions扩展信息等。

证书的签名:发布机构CA的私钥加密【hash算法(证书内容明文)】

3、CA根证书

根证书包含CA公钥。
一般来说,CA根证书会被内置在客户端,若没有内置,请求的时候回提示证书不被信任。
最经典的例子就是12306网站,之前浏览器一直提示网站证书不被信任,因为12306网站的根证书没有被内置在浏览器里。

HTTPS握手过程

序列图:

client server 明文A: 加密套件列表 TSL协议版本version 压缩算法列表 随机数random_a 扩展字段 client request with A 明文B: 加密套件列表 TSL协议版本version 压缩算法列表 随机数random_b 扩展字段 校验返回的CA证书 证书中提取公钥 server response with crt、B random_c change_cipher_spec encrypted_msg enc_key=Fuc(a,b,c) CA公钥加密【random_c】! 私钥解密 获取 加密算法和random_c, enc_key=Fuc(a,b,c) decrypt_msg校验验证 change_cipher_spec encrypted_msg 对称密钥加密 decrypt_msg 校验成功握手结束 内容传输加密通信! client server
CA证书校验:

1、使用证书hash算法(证书内容明文)获得信息摘要; 使用根证书内的公钥对证书签名解密; 如果一致,则可以确认证书的合法性,即服务端的公钥合法。
2、客户端然后验证证书相关的域名信息、有效时间等信息

enc_key 随机数a、b、c加密生成协商密钥
change_cipher_spec 通知后续的通信都采用协商的通信密钥和加密算法进行
encrypted_msg 计算所有当前的通信参数信息,生成一段数据;并采用协商密钥与算法加密
decrypt_msg 计算之前所有接收信息的 hash 值,然后解密接收的 msg,验证数据和密钥正确性

参考:https://www.cnblogs.com/mafeng/p/6651917.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值