https和http的区别
一、基本概念(http服务器-->本地浏览器,正确快速传输;https安全套接字层,http的安全版本, http+ssl层,建立一个信息安全的通道,保证数据传输的安全,确认网站的真实性)
1、HTTP:超文本传输协议(HyperText Transfer Protocol)。是互联网上应用最为广泛的一种网络协议,所有的www文件都必须遵守这个标准。是一个客户端和服务器端请求和应答的标准(TCP),用于从www服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
2、HTTPS:安全套接字层超文本传输协议(Hyper Text Transfer Protocol over Secure Socket Layer)。以安全为目标的HTTP通道,简单讲是HTTP的安全版本,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁,也就是说它的主要作用可以分为两种:
(1)建立一个信息安全的通道,来保证数据传输的安全;
(2)确认网站的真实性。
二、具体区别
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据加密传输,网景公司设计了SSL(Sercure Socket Layer)协议用于对HTTP协议传输的数据进行加密,从而诞生了HTTPS。具体的区别如下:
1、HTTPS更安全:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议的信息明文传输安全;
2、HTTPS需要申请证书:HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费,费用大概与.com域名差不多,每年需要大约几十元的费用。而常见的HTTP协议则没有这一项;
3、端口不同:HTTP使用的是大家最常见的80端口,而HTTPS连接使用的是443端口;
4、安全性不同:HTTP的连接很简单,是无状态的。而HTTPS协议是SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全;
三、HTTPS具体工作
HTTPS连接时,服务器要求有公钥和签名的证书。使用HTTPS连接,服务器响应初始连接,并提供它所支持的加密方法,作为回应,客户端选择一个连接方法,并且客户端和服务器端交换证书验证彼此身份,完成后在确保使用相同密钥的情况下传输加密信息,然后关闭连接,为了提供HTTPS连接支持,服务器必须有一个公钥证书,该证书包含经过证书机构认证的密钥信息,大部分证书都是通过第三方机构授权的以保证证书是安全的。
HTTPS跟HTTP一样,只不过增加了SSL。
1、HTTP包含如下动作:
(1)浏览器打开一个TCP连接
(2)浏览器发送HTTP请求到服务器端
(3)服务器发送HTTP回应信息到浏览器
(4)TCP连接关闭
2、SSL包含如下动作:
(1)验证服务器端;
(2)允许客户端和服务器端选择加密算法和密码,确保双方都支持
(3)验证客户端(可选)
(4)使用公钥加密技术来生成共享加密数据
(5)创建一个加密的SSL连接
(6)基于该SSL连接传递HTTP请求
四、HTTPS的工作原理
我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等安全级别较高的服务都会采用HTTPS协议。
1、客户端发起HTTPS请求
就是用户在浏览器里输入一个https网址,然后连接到server的443端口
2、服务端的配置
采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。
这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。
3、传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
4、客户端解析证书
这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。
如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。
5、传送加密信息
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
6、服务端解密信息
服务端用私钥解密后,得到了客户端传过来的随机值(新的私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
7、传输加密后的信息
这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。
8、客户端解密信息
客户端用之前生成的私钥(随机值)解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。
参考连接:
1、脚本之家:http://www.jb51.net/diannaojichu/315373.html
2、马海祥博客:http://www.mahaixiang.cn/internet/1233.html
3、HTTP、HTTPS的百度百科