写在前面:
HTTP协议是OSI7层模型中的应用层协议,用于客户端与服务器之间传输超文本信息的协议,但不提供加密服务,如果攻击者截取了传输报文,那么如用户名,密码等就会被直接获取。因为HTTPS协议也就应运而生,HTTPS协议安全超文本传输协议,保证了数据传输的安全。
HTTPS协议:
HTTPS其实是安全的HTTP协议,由于HTTP协议的不安全性,由NetScape公司研发的SSL协议,对HTTP协议进行了加密处理,也就是说HTTPS=HTTP+SSL。
HTTPS的工作原理如下:
(1)发起HTTPS请求
浏览器输入一个https网址,连接到server的443端口。
(2)服务器配置
采用HTTPS的服务器必须要有自己的数字证书,可以自己制作,也可以向组织申请。自己颁发的证书需要客户端验证通过,才可以继续访问。而使用组织申请到的受信任的证书,则不会弹出提示。这套证书是一套公钥和私钥。
(3)传送证书
这个证书其实就是公钥,包含了很多信息,证书的颁发机构,过期时间等。
(4)客户端解析证书
这部分工作由客户端的TLS完成,首先会验证公钥是否有效,如果发现异常,则会弹出一个警告,提示证书有问题。
如果证书没有问题,那么就生成一个随机值,然后用证书对随机值进行加密,把随机值用锁锁起来,这样除非有钥匙,否则不会看到锁住的内容。
(5)传送加密信息
传送用证书加密的随机值,目的是让服务器得到这个随机值,以后客户端和服务器的通信,就可以通过随机值进行通信。
(6)服务器端解密信息
服务器端用私钥解密,得到了客户端传来的随机值(私钥),然后把内容通过该值进行对称加密。对称加密就是,通过算法将内容和私钥混合在一起,除非知道私钥,否则无法获取信息。
(7)传输加密后的信息
这部分信息是由服务器用私钥加密后的信息,可以被客户端还原。
(8)传送加密信息
客户端用之前生成的私钥,解密服务器传来的信息。
HTTP与HTTPS的区别:
(1)HTTPS需要到Ca获取证书,一般免费证书较少,需要交费。
(2)HTTP是超文本传输协议,信息是明文传输,HTTPS是具有安全性的SSL加密HTTP协议。
(3)HTTP和HTTPS使用不同的连接方式,使用端口不同,HTTP使用80端口,而HTTPS使用443端口。
(4)HTTP的连接时无状态的,HTTPS协议是由SSL+HTTP协议构建的可加密的,身份认证的网络协议,比HTTP协议安全。