Luckylau's Blog

HTTP和HTTPS解读

Http 与 Https的区别

​ Hyper Text Transfer Protocol,超文本传输协议,是互联网上使用最广泛的一种协议,所有WWW文件必须遵循的标准。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。
​ Hyper Text Transfer Protocol over Secure Socket Layer,安全的超文本传输协议,网景公司设计了SSL(Secure Sockets Layer)协议用于对Http协议传输的数据进行加密,保证会话过程中的安全性。
HTTP 和 HTTPS 的不同之处:

HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
HTTP 是不安全的,而 HTTPS 是安全的
HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层
HTTP 无需加密,而 HTTPS 对传输的数据进行加密
HTTP 无需证书,而 HTTPS 需要认证证书

HTTP 和HTTPS(SSL) 包含动作区别:
HTTP:
浏览器打开一个 TCP 连接
浏览器发送 HTTP 请求到服务器端
服务器发送 HTTP 回应信息到浏览器
TCP 连接关闭
HTTPS:
验证服务器端
允许客户端和服务器端选择加密算法和密码,确保双方都支持
验证客户端(可选)
使用公钥加密技术来生成共享加密数据
创建一个加密的 SSL 连接
基于该 SSL 连接传递 HTTP 请求
HTTPS有单向认证和双向认证两种方式。

1.客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息。
2.服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书。
3.客户端使用服务端返回的信息验证服务器的合法性,包括:

证书是否过期
发行服务器证书的CA是否可靠
返回的公钥是否能正确解开返回证书中的数字签名
服务器证书上的域名是否和服务器的实际域名相匹配
验证通过后,将继续进行通信,否则,终止通信

4.客户端向服务端发送自己所能支持的对称加密方案,供服务器端进行选择。
5.服务器端在客户端提供的加密方案中选择加密程度最高的加密方式。
6.服务器将选择好的加密方案通过明文方式返回给客户端。
7.客户端接收到服务端返回的加密方式后,使用该加密方式生成产生随机码,用作通信过程中对称加密的密钥,使用服务端返回的公钥进行加密,将加密后的随机码发送至服务器。
8.服务器收到客户端返回的加密信息后,使用自己的私钥进行解密,获取对称加密密钥。
9.在接下来的会话中,服务器和客户端将会使用该密码进行对称加密,保证通信过程中信息的安全。
双向认证和单向认证原理基本差不多,只是除了客户端需要认证服务端以外,增加了服务端对客户端的认证。

1.客户端向服务端发送SSL协议版本号、加密算法种类、随机数等信息。
2.服务端给客户端返回SSL协议版本号、加密算法种类、随机数等信息,同时也返回服务器端的证书,即公钥证书。
3.客户端使用服务端返回的信息验证服务器的合法性,包括:

证书是否过期
发行服务器证书的CA是否可靠
返回的公钥是否能正确解开返回证书中的数字签名
服务器证书上的域名是否和服务器的实际域名相匹配
验证通过后,将继续进行通信,否则,终止通信

4.服务端要求客户端发送客户端的证书,客户端会将自己的证书发送至服务端。
5.验证客户端的证书,通过验证后,会获得客户端的公钥。
6.客户端向服务端发送自己所能支持的对称加密方案,供服务器端进行选择。
7.服务器端在客户端提供的加密方案中选择加密程度最高的加密方式。
8.将加密方案通过使用之前获取到的公钥进行加密,返回给客户端。
9.客户端收到服务端返回的加密方案密文后,使用自己的私钥进行解密,获取具体加密方式,而后,产生该加密方式的随机码,用作加密过程中的密钥,使用之前从服务端证书中获取到的公钥进行加密后,发送给服务端。
10.服务端收到客户端发送的消息后,使用自己的私钥进行解密,获取对称加密的密钥,在接下来的会话中,服务器和客户端将会使用该密码进行对称加密,保证通信过程中信息的安全。

SSL加密技术

​ SSL加密技术是全球许多知名企业为了保护敏感数据在传送过程中的安全而采用的一种加密机制,全称是Security Socket Layer。但加密和解密过程需要耗费系统大量的开销,严重降低机器的性能,相关测试数据表明使用HTTPS协议传输数据的工作效率只有使用HTTP协议传输的十分之一。
​ 为了保护敏感数据在传送过程中的安全,全球许多知名企业采用SSL(Security Socket Layer)加密机制。 SSL是Netscape公司所提出的安全保密协议,在浏览器(如Internet Explorer、Netscape Navigator)和Web服务器(如Netscape的Netscape Enterprise Server、ColdFusion Server等等)之间构造安全通道来进行数据传输,SSL运行在TCP/IP层之上、应用层之下,为应用程序提供加密数据通道,它采用了RC4、MD5以及RSA等加密算法,使用40 位的密钥,适用于商业信息的加密。同时,Netscape公司相应开发了HTTPS协议并内置于其浏览器中,HTTPS实际上就是HTTP over SSL,它使用默认端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。HTTPS协议使用SSL在发送方把原始数据进行加密,然后在接受方进行解密,加密和解密需要发送方和接受方通过交换共知的密钥来实现,因此,所传送的数据不容易被网络黑客截获和解密。
​ 然而,加密和解密过程需要耗费系统大量的开销,严重降低机器的性能,相关测试数据表明使用HTTPS协议传输数据的工作效率只有使用HTTP协议传输的十分之一。假如为了安全保密,将一个网站所有的Web应用都启用SSL技术来加密,并使用HTTPS协议进行传输,那么该网站的性能和效率将会大大降低,而且没有这个必要,因为一般来说并不是所有数据都要求那么高的安全保密级别。
SSL 数据加密应用——SSL数字证书
SSL 数字证书根据可信强度,可以分为以下几种:
域名型 SSL 证书(DVSSL)
企业型 SSL 证书(OVSSL)
增强型 SSL 证书(EVSSL)
企业 PKI 管理

参考:

http://blog.csdn.net/duanbokan/article/details/50847612
http://blog.csdn.net/flylovesky127/article/details/21516801

Luckylau wechat
如果对您有价值,看官可以打赏的!