超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
HTTP主要存在以下缺点:
1、在通信的过程使用明文传输,一旦信息被截获,用户的隐私就会被泄漏;
2、不对通信方的身份进行验证,因而通信双方可能会被黑客冒充;
3、无法保证通信数据的完整性,黑客可能会篡改通信数据。
安全套接字(Secure Sockets Layer, SSL)协议用以保障在 Internet 上数据传输的安全,利用数据加密技术,可确保数据在网络上的传输过程中不会被截取和窃听。
SSL协议提供的安全通道有以下3个特性:
1、在通信的过程中使用密钥加密通信数据,即使信息被截获,用户的隐私也不会被泄漏;
2、服务器和客户都会被认证,客户的认证是可选的;
3、SSL协议会对传送的数据进行完整性检查,黑客无法篡改通信数据。
而HTTPS相当于HTTP+SSL协议:
因为在原有的结构中多了SSL这一层,所以HTTP首先需要使用SSL来建立连接。HTTP与HTTPS的区别如下图所示:
相比HTTP,HTTPS的加密过程要复杂很多,这里一共分成8个步骤:
1、客户端首先向服务端发送请求,连接到服务端到443端口,发送的信息包括客户端支持的加密算法;
2、服务端在接收信息之后,向客户端发送匹配好的协商加密算法(客户端提供算法的子集);
3、服务端向客户端发送数字证书,可以是权威机构所颁发的,也可以是自己制作的。该证书中包含“证书颁发机构、过期时间、服务器公钥、服务端域名信息”等内容;
4、客户端对证书进行解析,并验证数字证书是否有效,如果发现异常,就会弹出一个警告框,提示该数字证书存在问题。如果该数字证书验证通过,客户端就会生成一个随机数R;
5、客户端使用数字证书中的公钥对随机数R进行加密,然后发送给服务端;
6、服务端使用私钥对传输数据进行解密,得到随机数R;
7、客户端使用随机数R和协商加密算法加密一条消息发送给服务端,验证服务端是否能正常接收自客户端的消息;
8、服务端也通过随机数R和协商加密算法加密一条消息发送给客户端,如果客户端能够正常接收来自服务端端消息,则表明SSL层连接已经成功建立。
数字证书颁发机构的工作原理:
上面介绍的HTTPS的加密过程的8个步骤中,最关键的是第3个步骤中服务端发送的数字证书。这个数字证书有两种来源:
第一种是由服务端自行生成的,这种情况下并不能保证通信的安全(因为数字证书很容被调包);
第二种是由权威的证书颁发机构(Certificate Authority CA)所颁发的,这种情形下安全性才得到了真正的提示。
服务端如果想要获得数字证书,就需要向证书颁发机构申请。证书颁发机构生成一对公钥和私钥、一个服务端端数字证书,并使用私钥对数字证书进行加密,该私钥不是公开的。
证书颁发机构向服务器A颁发包含CA公钥的数字证书,并向客户端提供CA公钥。证书颁发机构的工作原理如下图所示:
这样一来,由于专门用来加密数字证书的私钥掌握在证书颁发机构手中,即使服务端向客户端发送的数字证书被黑客截获,他们也只能解读,无法篡改。因为篡改数字证书后, 用户就无法使用证书颁发机构提供的CA公钥对数字证书进行解密。黑客获得的数字证书中的CA公钥也只能用来加密,不能解密,这样他们也无法获悉服务端和客户端加密的信息。即使使用了数字证书机制,仍然可能会出现以下问题导致完全机制失效。
标签:HTTP,区别,颁发,数字证书,HTTPS,加密,服务端,客户端 From: https://www.cnblogs.com/n5you/p/17515494.html