HTTP与HTTPS——密码学笔记(九)

原文:http://www.mahaixiang.cn/internet/1233.html

一、HTTP协议

HTTP协议:Hyper Text Transfer Protocol(超文本传输协议),是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览的传送协议,是一个客户端和服务器端请求和应答的标准(TCP),是互联网上应用最为广泛的一种网络协议,它可以使浏览器更加高效,使网络传输减少。

HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等)。

使用TCP端口为:80

二、HTTPS协议

由于使用HTTP协议传输隐私信息非常不安全,于是网景(Netscape)公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,由此诞生了HTTPS协议。

HTTPS协议:Hyper Text Transfer Protocol over Secure Socket Layer,安全的超文本传输协议。HTTP协议直接放置在TCP协议上,而HTTPS提出在HTTP和TCP中间加上一层加密层从发送端看,这一层负责把HTTP的内容加密后送到下层的TCP,从接收方看,这一层将TCP送来的数据解密还原成HTTP的内容。SSL协议是主要用于WEB的安全传输协议,它在HTTPS协议栈中负责实现加密层。因此,一个HTTPS协议栈大致是:


使用TCP端口默认为:443

HTTPS加密、验证过程:


简单说来,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。

HTTPS工作原理:

1、客户端发起HTTPS请求:用户在浏览器里输入一个https网址,然后连接到server的443端口

2、服务器的配置:采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。这套证书其实就是一对公钥和私钥。

3、传送证书:这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

4、客户端解析证书:这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密。

5、传送加密信息:这部分传送的是用证书加密后的随机值,目的就是让服务器得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

6、服务端解密信息:服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7、传输加密后的信息:这部分信息是服务端用私钥加密后的信息,可以在客户端被还原

8、客户端解密信息:客户端用之前生成的私钥解密服务端传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据也束手无策。

三、HTTP和HTTPS协议的区别

1、https协议需要CA申请证书,一般免费证书较少,因而需要一定费用

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443

4、http的连接很简单,是无状态的;https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页