http与https的区别

很多人以为http与https是一个意思,其实差别很大,下面小编就为你介绍一下他们的区别 。
概念:
1、超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议 。所有的WWW文件都必须遵守这个标准 。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法 。
2、HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版 。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL 。它是一个URI scheme(抽象标识符体系),句法类同http:体系 。用于安全的HTTP数据传输 。
区别:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用 。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议 。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443 。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全 。

【http与https的区别】

http与https的区别

HTTPS解决的问题:
1、信任主机的问题 。采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书 。
改证书只有用于对应的server 的时候,客户度才信任次主机 。所以目前所有的银行系统网站,关键部分应用都是https 的 。客户通过信任该证书,从而信任了该主机 。其实这样做效率很低,但是银行更侧重安全 。这一点对我们没有任何意义,我们的server,采用的证书不管自己issue 还是从公众的地方issue,客户端都是自己人,所以我们也就肯定信任该server 。
2、通讯过程中的数据的泄密和被窜改 。
1)一般意义上的https,就是 server 有一个证书 。
a) 主要目的是保证server 就是他声称的server 。这个跟第一点一样 。
b) 服务端和客户端之间的所有通讯,都是加密的 。
i、具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥 。一般意义上的握手过程 。
ii、加下来所有的信息往来就都是加密的 。第三方即使截获,也没有任何意义 。因为他没有密钥 。当然窜改也就没有什么意义了 。
2)少许对客户端有要求的情况下,会要求客户端也必须有一个证书 。
a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个CA 认证过的身份 。应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份 。
b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体 。像我用的交通银行的网上银行就是采取的这种方式 。HTTPS 一定是繁琐的 。
a) 本来简单的http协议,一个get一个response 。由于https 要还密钥和确认加密算法的需要 。单握手就需要6/7 个往返 。
i、任何应用中,过多的round trip 肯定影响性能 。
b) 接下来才是具体的http协议,每一次响应或者请求,都要求客户端和服务端对会话的内容做加密/解密 。
i、尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片 。如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求 。
http与https的区别

HTTPS的工作原理:
1、客户端发起HTTPS请求
用户在浏览器里输入一个https网址,然后连接到server的443端口 。
2、服务端的配置
采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务) 。
3、传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等 。
4、客户端解析证书
这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题 。
如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容 。
5、传送加密信息
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了 。