HTTP和HTTPS区别
- 端口不同 :HTTP的URL为"http://"默认端口为80,而HTTPS的URL由"https://"默认端口为443
- 安全性和资源的消耗: HTTP协议运行在TCP之上,所有传输的内容都是明文传输,客户端和服务端都无法验证对方的身份。而HTTPS运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的秘钥用服务器放的整数进行了非对称加密,所以说,HTTP安全性没有HTTPS搞,但是HTTPS比HTTP消耗的资源更多
- 对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES,AES等;
- 非对称加密:密钥成对出现(根据公钥无法推知私钥,根据私钥也无法推知公钥),加解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA,DSA等
HTTPS——SSL和TLS
SSL:安全套接层
TLS: 传输层安全性协议 位于HTTP和TCP之间的协议,其内部有TLS握手协议,TLS记录协议
HTTPS经由HTTP进行通信,但利用TLS来保证安全,所以HTTPS= HTTP+TLS
TLS 使用的密码技术
- 伪随机数生成器:秘钥生成随机性,更难被猜测
- 对称密码:对称密码使用的秘钥就是由伪随机数生成,相较于非对称密码,效率更高
- 消息认证码:保证消息信息的完整性、以及验证消息信息的来源
- 公钥密码:证书技术使用的就是公钥密码
- 数字签名:验证证书的签名,确定由真实的某个 CA 颁发
- 证书:解决公钥的真实归属问题,降低中间人攻击概率
HTTPS的一次请求流程
先建立一个tcp的连接
浏览器获取证书
浏览器验证证书->去ca验证,ca已经把根证书存到了我们的操作系统中
浏览器通过公钥加密一个对称密钥(一段数据),
服务器接收到密文,通过自己的私钥解密得到对称密钥
接下来的传输使用对称加密算法,以及对称密钥进行通信
|