http和https的基本概念
http:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从www服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
https:是以安全为目标的http通道,简单讲是http的安全版,即http下加入SSL层,https的安全基础是SSL,因此加密的详细内容就需要SSL。
一、http存在的问题-不安全
1、http 本身不具备加密的功能,http 报文使用明文方式发送
2、无法确认发送的服务器是不是伪装服务器
3、无法确认返回的客户端是目标客户端
4、请求或响应的运输中,容易遭攻击者拦截并纂改内容
由于http的明文传输的特性,在传输过程容易遭拦截、修改或伪造请求,那么https怎么解决上述问题呢?为了保证隐私数据加密传输,网景公司设计了SSL(TLS)协议,用于对http协议传输的数据进行加密,简单说https=http+ ssl(tls) = https
二、接下来主要讲讲http是的原理解析
根据上图,https整个通讯过程可分为两大阶段:证书验证和数据传输阶段,数据传输阶段又可以分为对称加密和非对称加密阶段,具体流程根据图中序号讲解;
1、客户端请求 HTTPS 网址,然后连接到 server 的 443 端口 (HTTPS 默认端口,类似于 HTTP 的80端口)。
2、采用 HTTPS 协议的服务器必须要有一套数字 CA (Certification Authority)证书,证书是需要申请的,并由专门的数字证书认证机构(CA)通过非常严格的审核之后颁发的电子证书 ( (当然了是要钱的,安全级别越高价格越贵))。颁发证书的同时会产生一个私钥和公钥。私钥由服务端自己保存,不可泄漏。公钥则是附带在证书的信息中,可以公开的。
3、服务器响应客户端请求,将证书传递给客户端,证书包含公钥和大量其他信息,比如证书颁发机构信息,公司信息和证书有效期等。
4、客户端解析证书并对其进行验证。如果证书不是可信机构颁布,或者证书中的域名与实际域名不一致,或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。就像下面这样
浏览器警告:
可信任:
如果证书没有问题,客户端就会从服务器证书中取出服务器的公钥A。然后客户端还会生成一个随机码 KEY,并使用公钥A将其加密。
5、客户端把加密后的随机码 KEY 发送给服务器,作为后面对称加密的密钥。
6、服务器在收到随机码 KEY 之后会使用私钥B将其解密。经过以上这些步骤,客户端和服务器终于建立了安全连接,完美解决了对称加密的密钥泄露问题,接下来就可以用对称加密愉快地进行通信了。
7、服务器使用密钥 (随机码 KEY)对数据进行对称加密并发送给客户端,客户端使用相同的密钥 (随机码 KEY)解密数据。
8、双方使用对称加密愉快地传输所有数据
总结
最后来总结一下http与https的区别、https的缺点:
HTTPS 和 HTTP 的区别:
- 最重要的却别是安全性,http明文传输,安全性较差,https传输过程对数据加密,安全性好
- http和https使用不同连接方式,用的端口也不同,http是80,https是443
- https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用
https缺点:
- https相比http更耗服务器资源,面响应速度较慢,导致陈本较高
- https需要绑定IP,不能在同一IP上绑定多个域名
- SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用