HTTPs 学习笔记
目录
HTTPS协议的简单理解
非专业解释,主要便于理解
流程描述
HTTPS的通信流程可以简单描述一下
可以认为服务器有两把钥匙,一把叫公钥 一把叫私钥(服务器)。
“公钥”的作用只有一个:让客户端对自己的信息加密。
1. 客户端发送请求。
2. 服务器返回证书。
3. 客户端对证书进行验证。(防止冒充服务器)
4. 客户端验证成功则进行第5步否则警告用户
5. 客户端会产生一个随机数并结合某种算法生成一个临时私钥
6. 客户端使用证书里面的公钥把临时私钥加密并传输给服务器
7. 服务器使用私钥解密客户端消息获取临时私钥
8. 客户端使用临时私钥加密并发送敏感信息(比如密码)
9. 服务器使用临时私钥解密并获取敏感信息
在上述过程中,所有的信息都是加密传输的。即使抓包也只是一堆看不懂的密文:没有拿到服务器的私钥那就没办法查看客户端与服务器的临时私钥,因为临时私钥是用公钥加密过的,只能用服务器的私钥解密。因此中间过程不可能下得了手。
客户端将这个随机生成的临时私钥用服务器的公钥加密发给服务器,服务器用自己的私钥解密,这时候服务器也就获取了临时私钥。
接下来的对话就不是非对称加密的方式了,而是使用的对称加密,服务器用临时私钥加密信息发给客户端,客户端也用临时私钥把信息解密。
一些HTTPs的知识点
- SSL/TLS协议
- 非对称加密
- 对称加密
- 单向散列函数
- 中间人攻击
- 域名劫持
- 签名
- 证书
关于HTTPs的好处
用了它后台就可以不必煞费苦心进行传输信息的加密了,省劲。
关于根证书
首先,一般系统会预置很多根证书,它们都是来自受信任的根证书颁发机构,并且全球也就那么几所机构而已。
其他网站如果需要使用HTTPs,那么只能向这些机构购买证书,
证书都有一个生效期以及失效期。
有时候使用机房的电脑上网总会提示证书警告,原因可能就是机房电脑的系统时间不对,要么还没到生效期要么就是过了失效期。
没有该CA机构的根证书,那么任何由这个机构颁发的证书都会无法通过
证书是可以自己生成,但是几乎所有的客户端都不信任你,想让客户端信任的话只能手动安装根证书才行
证书能不能伪造
关于证书能不能伪造的问题已经由一个很合理的描述:
数字证书里有CA的数字签名,签名是由证书内容的哈希摘要用CA的私钥加密的。用CA的公钥验证签名的合法性就可以验证证书的真假