概念:
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。他是一个URL Scheme(抽象标识附体系),句法类同http体系。用于安全的HTTP数据。
主要区别:
1.https协议需要到ca申请证书,一般免费证书较少,因此需要一定的费用。
2.http是超文本传输协议,信息是明文传输,Https则是具有安全性的ssl加密传输协议。
3.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4.http的传输很简单,是无状态的:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议,比http协议安全。
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更多的请求
HTTPS的工作原理:
1,客户端发起HTTPS请求
用户在浏览器里输入一个https网站,然后连接到server的443端口。
2,服务端的配置
采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以像组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startss就是个不错的选择,有1年的免费服务)。
3,传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
4,客户端解析证书
这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么久生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有密钥,不然看不到被锁住的内容,
5,传送加密信息
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
6,服务端解密信息
服务端用私钥解密后,的得了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,私钥够复杂,数据就够安全。
7,传输加密的信息
这部分信息是服务端用私钥加密后的信息,可以在客户端被还原。
8,客户端被解密信息
客户端用之前生成的私钥解密服务端传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。