HTTPS 通信原理及详细介绍
HTTPS 通信原理
Https是基于安全目的的Http通道,其安全基础由SSL层来保证。最初由netscape公司研发,主要提供了通讯双方的身份认证和加密通信方法。现在广泛应用于互联网上安全敏感通讯。
我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。
HTTPS简介
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密,解密,验证的,且看下图。
1. 客户端发起HTTPS请求
这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。
2. 服务端的配置
采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。这套证书其实就是一对公钥和私钥。如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。
3. 传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
4. 客户端解析证书
这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。
5. 传送加密信息
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
6. 服务段解密信息
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
7. 传输加密后的信息
这部分信息是服务段用私钥加密后的信息,可以在客户端被还原
8. 客户端解密信息
客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关文章
详解nginx同一端口监听多个域名和同时监听http与https
这篇文章主要介绍了详解nginx同一端口监听多个域名和同时监听http与https的相关资料,需要的朋友可以参考下...2017-07-06- 本篇文章主要介绍了详解Vue 非父子组件通信方法(非Vuex),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...2017-05-27
- 这篇文章主要介绍了使用nginx方式实现http转换为https的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-06
- 下面我们以WIN2000服务器版本的来做例子,介绍一下怎样利用SSL加密HTTP通道来加强IIS安全的,需要的朋友可以参考下...2017-07-06
- 我特地咨询了下官方技术,得到的原因是该用户启用了半程加密,半程加密节点请求的是HTTP端口的,而客户源服务器本来就是部署了HTTPS,而且是强制跳转HTTPS的,导致节点无法正常请求HTTP端口,也就出现了重定向次数过多的问题。...2020-05-20
- 这篇文章主要介绍了nginx http重定向https配置说明的相关资料,需要的朋友可以参考下...2017-07-06
nginx强制使用https访问的方法(http跳转到https)
这篇文章主要介绍了nginx强制使用https访问的方法(http跳转到https),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。...2017-01-22- 无废话图文教程,教你一步一步搭建CA服务器,以及让IIS启用HTTPS服务,需要的朋友可以参考下...2017-07-06
- 本文总结了如何获得SSL证书并给Django项目配置HTTPS,建议先收藏再阅读,将来有一天你很可能会用到它。...2021-05-01
- 刚接触微信小程序,对里面的语法和属性还不怎么了解,最近正在努力学习中,下面这篇文章主要给大家介绍了微信小程序中多个页面传参通信的相关资料,是最近学习的一个内容总结,需要的朋友可以参考借鉴,下面来一起看看吧。...2017-05-09
IIS7 IIS8 http自动跳转到HTTPS(80端口跳转443端口)
这篇文章主要介绍了IIS7 IIS8 http自动跳转到HTTPS(80端口跳转443端口),需要的朋友可以参考下...2020-08-16windows环境下用squid代理https(ssl)的方法
这篇文章主要是为大家介绍下windows环境下用squid代理https(ssl)的方法,需要的朋友可以参考下...2016-01-27解决iis7.5服务器上.net 获取不到https页面的信息
让我纠结了一天多的问题,给大家看下,有相同情况的可以不用浪费时间了,本人当时找了好半天都没找到什么有用的信息,项目在本地没有问题,但部署在服务器后,获取不到https页面的信息,加入下面的代码就可以了,因为iis7.5的安全协议比较高的原因。...2021-09-22win2003 IIS 6.0实现全站https访问的配置方法
这篇文章主要介绍了win2003 IIS 6.0实现全站https访问的配置方法,需要的朋友可以参考下...2017-07-06- 这篇文章主要介绍了使用Nginx实现HTTPS双向验证的方法,涉及到单向验证和双向验证的区别介绍,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧...2016-08-27
- 这篇文章主要介绍了有了SSL证书,如何在IIS环境下部署https,需要的朋友可以参考下...2017-07-06
- 这篇文章主要介绍了IIS 7中如何实现http重定向https,需要的朋友可以参考下...2017-07-06
- 本篇文章主要介绍了阿里云LINUX服务器配置HTTPS(NGINX) ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...2017-07-06
ASP.NET Core 1.0 部署 HTTPS(.NET Core 1.0)
这篇文章主要为大家详细介绍了ASP.NET Core 1.0 部署 HTTPS(.NET Core 1.0),感兴趣的小伙伴们可以参考一下...2021-09-22ASP.NET Core Kestrel 中使用 HTTPS (SSL)
这篇文章主要为大家详细介绍了ASP.NET Core Kestrel 中使用 HTTPS(SSL)的相关资料,感兴趣的小伙伴们可以参考一下...2021-09-22