概念
https(超文本传输安全协议)是一种以安全为基础的HTTP传输通道。
在了解HTTPS之前,我们首先来认识一下http:
http(超文本传输协议),HTTP是tcp/ip族中的协议之一,也是互联网上应用最为广泛的协议之一,所有的WWW(万维网)文件都必须遵循这个标准。而设计http协议的最终目的是用来在互联网上传输HTML文件
http的缺陷
明文
因为http协议在文件的传输过程中是以明文的方式传输的,这就决定了http协议不能用来传输一些隐私的信息,比如密码,账号
信息被窃取
用户的请求是通过服务器层层转发到web服务器的,请求最先经过路由器转发到最近的服务器,再通过一系列的算法转发到最近的服务器直到目标web服务器,中间人会窃取信息,这也不安全
引入https
因为上面的问题,所以需要一种安全传输协议https
https(超文本传输安全协议),https是在http协议的基础上增加了安全的属性,https通过ssl/tls(安全套阶层)来加密数据包,ssl再通过数字证书来验证服务器的身份,以此来实现数据在客户端到服务器之间的传输安全。
https协议在数据的传输过程中又是怎么进行加密和身份验证的?
方案一、对称加密
会面临一个问题,就是秘钥A需要传递到客户手里,通过网络传输的话,中间人还是会劫持到秘钥信息,会被篡改传输的内容。如果秘钥不经过网络传输又不现实
方案二、非对称加密
非对称秘钥解密原则
私钥可以解密公钥加密的内容
公钥可以解密私钥加密的内容
客户端和中间人都会收到服务器端下发的公钥,那么客户端发出的消息使用公钥加密后,中间人是无法解密的;当服务器端收到消息后,返回给客户端的消息使用私钥加密的,所以,除了客户端之外,中间人仍然能解密密文,这个也是不安全的。
方案三、使用对称加密 + 非对称加密
客户端使用服务器的公钥给浏览器生成的私钥加密,然后服务器和浏览器之间用私钥加密解密传输消息,使用私钥加解密的优点是速度更快
问题在于,服务器返回公钥a给客户端的过程中,还是会被中间人篡改返回的公钥信息,假设中间人维护了一对公钥A私钥B,那么客户端就会把私钥c通过中间人的公钥加密并传输给中间人,所以,这种方案也不安全
最终方案:数字证书
数字证书由受信任的第三方办法,并且装机的时候就在系统中,数字证书中包含了证书持有者的信息和公钥信息,再也不用担心公钥的身份了
那么有一个问题,就是如何确保第三方机构公钥的身份呢,实际上数字证书CA是被操作系统信任的,内置在操作系统中 ,这样就保证了CA证书的公钥身份