HTTPS了解一下
什么是HTTPS
HTTPS其实是有两部分组成:HTTP + SSL / TLS。服务端和客户端的信息传输都会通过TLS进行加密。
HTTP使用80端口通讯,而HTTPS占用443端口通讯。
HTTP与HTTPS
应用层多了TLS协议
CA证书
cer证书证书一般包含哪些信息
- 证书信息:过期时间和序列号
- 所有者信息:姓名等
- 所有者公钥
- 签名
TLS/SSL
TLS/SSL的功能实现主要依赖于三种算法:散列函数hash、对称加密、非对称加密
。
非对称加密
:身份的确认和秘钥协商 RSA,DSA/DSS
对称加密
:用协商好的秘钥对数据进行加密 AES,RC4,3DES
散列函数hash
:用于验证消息的完整性 MD5,SHA1
图片化流程:
文字化叙述:
1.客户端发起一个HTTPS请求,将自己支持的算法发送给服务端;
2.服务器收到报文后,选出一套非对称加密方式
,以证书
的形式返回给客户端,证书里面包含了网站地址,加密公钥
,以及证书的颁发机构等信息;
3.客户端收到后进行验证,如果证书没有问题,会生成一串随机数的密码,并用证书中提供的公钥对该随机值进行加密(此时为非对称加密),并发送给服务器;
4.服务器用私钥
解密后得到客户端传过来的随机值,然后把内容通过该随机值进行对称加密
,发送给客户端;
5.客户端解密,并用hash
校验消息的完整性,如果一致,握手结束;
6.之后所有的通信数据将由之前客户端生成的随机密码并利用对称加密算法进行加密。
RSA性能是非常低的,原因在于寻找大素数、大数计算、数据分割需要耗费很多的CPU周期,所以一般的HTTPS连接只在第一次握手时使用非对称加密,通过握手交换对称加密密钥,在之后的通信走对称加密。
总结
服务器 用RSA生成公钥和私钥
把公钥放在证书里发送给客户端,私钥自己保存
客户端首先向一个权威的服务器检查证书的合法性,如果证书合法,客户端产生一段随机数,这个随机数就作为通信的密钥,我们称之为对称密钥,用公钥加密这段随机数,然后发送到服务器
服务器用密钥解密获取对称密钥,然后,双方就已对称密钥进行加密解密通信了