前言:不管是前端开发、后端开发还是测试工程师的面试题,都可能问到HTTP和HTTPS。因此弄清楚这两个是十分重要的。
什么是HTTP?
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用层最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接受HTML页面的方法。
什么是HTTPS?
基于HTTP协议,通过SSL或TLS提供加密处理数据,验证对方身份以及数据完整性保护。
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容。
- 验证身份:通过证书认证客户端访问的是自己的服务器。
- 保护数据完整性:防止传输的内容被中间人冒充或者篡改。
混合加密:结合对称加密和非对称加密技术。客户端使用对称加密生成秘钥对传输数据进行加密,然后使用非对称加密的公钥再对秘钥进行加密,所以网络上传输的数据是被秘钥加密的密文和用公钥加密后的秘钥,因此即使被黑客截取,由于没有私钥,无法获取到加密明文的秘钥,便无法获取到明文数据。
HTTPS是如何工作的?
基础知识:
非对称加密的特点:
- 任何经过A的公钥进行过加密的信息,只有A的私钥才能解密。
- 任何有公钥的人可以确认对方发送的信息是被私钥加密过的。
HTTP和HTTPS的区别:
- https协议需要到CA申请证书,一般免费的证书较少,因而需要一定的费用。
- http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443.
- http的连接很简单,是无状态的,https协议是有SSL + HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。