在计算机中,想要传输数据必须要遵守计算机通讯协议,下面就让我带你们来了解一下经典的https通讯协议,一起来看看吧。
HTTPS (Secure Hypertext Transfer Protocol)中文又叫安全超文本传输协议,是一个安全通信通道,它是基于HTTP开发的用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单的说它就是HTTP的安全版,是使用TLS/SSL加密的HTTP协议。 HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而TLS/SSL协议具有身份验证、信息加密和完整性校验的功能,可以避免此类问题发生。
TLS/SSL全称安全传输层协议Transport Layer Security, 是介于TCP和HTTP之间的一层安全协议,不会影响原有的TCP协议和HTTP协议,所以使用HTTPS实际上不需要对HTTP页面进行太多改造。
https由两部分组成:http + SSL /
TLS,就是在http上又加了一层处理加密信息的模块。在https中,服务端和客户端信息传输,都需要通过TLS进行加密,所以传输的数据都是加密后的数据。具体如何加密,解密,验证的,请看如下:
1. 客户端发起https请求
客户端发起https请求就是指用户在浏览器里输入一个https网址,然后连接到server的443端口。
2. 服务器端的配置
采用https协议的服务器必须要有一套SSL数字证书,需要向CA组织申请。这套SSL证书其实就是一对公钥和私钥。如果对公钥和私钥不是很理解的话,你可以把它们想象成一把钥匙和一个锁头,只是不同的是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。SSL证书是网站实现https加密协议的先决条件,可以向CA机构申请免费SSL证书,也可以付费购买高级别的SSL证书。目前沃通CA提供3年期免费SSL证书申请http://freessl.wosign.com。
3. 传送证书
这个证书其实就是公钥,只是包含了许多其他信息,如证书颁发机构,证书过期时间等。
4. 客户端解析证书
这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。
5. 传送加密信息
传送中使用的是SSL证书加密后的随机值,目的就是让服务端得到这个随机值,后面客户端及服务端的通信就可以使用这个随机值来加密解密。
6. 服务段解密信息
在服务端用私钥解密后,会得到客户端传过来的随机值也就是私钥,再把内容通过该值进行对称加密。所谓对称加密就是,将之信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够强劲,私钥够复杂,数据就够安全。
7. 传输加密后的信息
这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。
8. 客户端解密信息
客户端用之前生成的私钥解密服务段传过来的信息,就可以获取解密后的内容。整个过程中第三方即使监听到了数据,也会束手无策。
以上就是本篇文章的所有内容,更多Java入门知识请关注我们了解详情吧