①:HTTP的默认端口是 80,HTTPS的默认端口是 443。
②:HTTP 信息是明文传输的,传输的数据不安全。直接运行在TCP协议上。
③:HTTPS协议是基于HTTP协议,所有传输的内容都经过SSL或TLS提供加密处理,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。
HTTPS运行在运行在SSL/TLS之上,SSL/TLS运行在TCP之上。
(1)首先搜索浏览器自身的DNS缓存,如果没有操作系统会先检查自己本地的hosts文件是否有这个网址映射关系。如果前面都没找到,递归地去域名服务器去查找,先查本地域名服务器,根域名服务器,com顶级域名服务器,找到之后返回并缓存下来。
(2)浏览器跟WEB服务器通过三次握手建立一个TCP连接
(3)建立TCP连接之后发起HTTP请求
(4)服务器收到HTTP请求之后,处理请求并返回给客户端 html 代码。
(5)客户端解析 html 代码,并请求 html 中的资源
(6)最后关闭TCP连接,渲染页面并呈现出来
(1)客户端向服务器发起HTTPS请求,连接到服务器的443端口
(2)服务器端有一个密钥对,也就是用来进行非对称加密使用的公钥和私钥,服务端保存私钥,把公钥发送给客户端。
(3)服务器将自己的证书(包含公钥)发送给客户端。
(4)客户端收到服务器端的证书之后,会对证书进行检查,验证其合法性,如果发现发现证书有问题,那么HTTPS传输就无法继续。没有问题的话就会服务器的公钥对客户端密钥进行非对称加密,然后发送给服务器。至此,HTTPS中的第一次HTTP请求结束。
(5)客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。
(6)服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。
(7)然后服务器将加密后的密文发送给客户端。
(8)客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。
把要传输的数据用密钥进行加密,甲把密钥传给乙,把密文传给乙,乙根据密钥和密文解密
——>出现密钥传输问题,密钥传输可能被劫持
——>采用非对称加密
有公钥和私钥,
公钥加密的可以用私钥解开,私钥加密的可以用公钥解开
公钥发布给外界,私钥自己留着
——>出现获取公钥的问题,可能出现伪造公钥的情况
——>引入信任问题
网络中的信任中心是由现实中很大的集团等进行背书的
认证机构:CA
网络信任证书: CA根证书
如何判断CA根证书是真的——>在操作系统里面就有证书,能够一级一级校验,判断是真的乙发送的公钥,还是假的发送的