图解HTTPS

   朱祁林       zhuqilin   
返回主页
Cocoa And Dotnet.
我沉静我思考 我的新浪围脖 http://t.sina.com.cn/happy2016 欢迎加入
首页新随笔联系订阅管理 随笔- 269  文章- 0  评论- 3689 
图解HTTPS
我们都知道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. 客户端解密信息
客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。
 
作者:朱祁林 出处:http://zhuqil.cnblogs.com 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
好文要顶 关注我 收藏该文  
麒麟
关注 - 55
粉丝 - 1039
荣誉:推荐博客
+加关注
5 0
(请您对文章做出评价)
« 上一篇:招聘.net开发工程师
» 下一篇:推荐近期阅读过的几本书
posted @ 2012-07-23 10:25 麒麟 阅读(5640) 评论(5) 编辑 收藏
 
评论列表
   #1楼 2012-11-29 18:24 五子登科  
请教楼主,如果客户端要发送内容给服务端是怎么加密的,也是通过第5步中的随机值进行加密的?
支持(0)反对(0)
   #2楼 2012-11-30 23:52 lovebanyi  
监听到确实是没有问题,但是如果处在路由端可以修改数据的就有风险了,
 
这个风险在于验证证书的有效性哪边。 根证书的哪些人就可以搞定这个了。还有一些网站证书本身就是非法的,网站必弹哪个。在客户端请求证书的时候发一个假的证书给它,然后自己向服务端请求证书。 把自己当成代理就行了。
支持(2)反对(0)
   #3楼 2014-04-29 10:11 twlkyao  
@lovebanyi
代理的话也许要有证书,并且可以得到客户端的认证,就像Fiddler一样。
支持(0)反对(0)
   #4楼 2014-04-29 14:04 echozhao  
请问博主这个图用什么工具绘制的?
支持(0)反对(0)
   #5楼 2015-08-18 10:12 生命潦草  
443 解密之后是不是要转发到80端口?
支持(0)反对(0)
刷新评论刷新页面返回顶部
注册用户登录后才能发表评论,请 登录 或 注册,访问网站首页。
【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【推荐】融云即时通讯云-专注为 App 开发者提供IM云服务
【推荐】UCloud开年大礼,充5000返1000;买云主机送CDN,详情点击
 
 
最新IT新闻:
· google加密Android遭手机厂商抵制 担心运行速度变慢
· ParaZero为无人机设计紧急降落伞:SafeAir
· Android Chrome浏览器将支持下载暂停和取消
· AMD称已统治83%的VR市场
· Xbox One销量突破2000万 仅为PS4一半
» 更多新闻...
极光推送20160307
最新知识库文章:
· 架构漫谈(一):什么是架构?
· 架构的本质
· 谷歌背后的数学
· Medium开发团队谈架构设计
· 理解“渐进增强(Progressive Enhancement)”
» 更多知识库文章...
可承接各类型的中小型.net项目
联系邮箱:zhuqi0@126.com
 
 
昵称:麒麟
园龄:7年7个月
荣誉:推荐博客
粉丝:1039
关注:55
+加关注
<    2012年7月    >
日    一    二    三    四    五    六
24    25    26    27    28    29    30
1    2    3    4    5    6    7
8    9    10    11    12    13    14
15    16    17    18    19    20    21
22    23    24    25    26    27    28
29    30    31    1    2    3    4
搜索
 
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
更多链接
最新随笔
1. 10分钟教你打造一个微信语音点歌系统
2. HTML5 移动浏览器支持
3. 微信公众平台向特定用户推送消息
4. 圆角与半角互相转换
5. json格式化和查看工具
6. 程序人生之办公桌
7. SSL协议详解
8. 推荐近期阅读过的几本书
9. 图解HTTPS
10. 招聘.net开发工程师
我的标签
WF4.0(45)
超级简单(26)
ASP.NET MVC(13)
WPF(10)
WCF(5)
音频聊天室(4)
序列化(3)
小技巧(2)
asp.net(2)
偷闲搞笑(2)
更多
随笔档案(269)
2013年12月 (1)
2013年10月 (2)
2013年8月 (1)
2013年2月 (1)
2012年12月 (1)
2012年10月 (1)
2012年8月 (1)
2012年7月 (2)
2012年6月 (2)
2012年5月 (1)
2012年4月 (2)
2012年1月 (1)
2011年12月 (2)
2011年11月 (3)
2011年10月 (3)
2011年9月 (2)
2011年8月 (6)
2011年7月 (15)
2011年6月 (1)
2011年5月 (6)
2011年4月 (3)
2011年3月 (5)
2011年1月 (1)
2010年12月 (2)
2010年11月 (2)
2010年10月 (9)
2010年9月 (9)
2010年8月 (10)
2010年7月 (12)
2010年6月 (11)
2010年5月 (16)
2010年4月 (16)
2010年3月 (17)
2010年2月 (18)
2010年1月 (39)
2009年12月 (32)
2009年11月 (3)
2009年8月 (2)
2009年7月 (3)
2008年12月 (1)
2008年8月 (4)
相册(5)
MVP聚会(5)
asp.net mvc
asp.net mvc
scottgu
silverlightdemo
Windows Server AppFabric WIKI
Visio开发
stackoverflow
wmorein
WCF
Artech WCF
WF
Cathy Dumas's Workflow Designer Blog
Go with The Flow
google
Jon Flanders
kushals
Matt W's Windows Workflow
pandrew
problemsolver
Ron Jacobs
tilovell
Windows Server AppFabric
快递单号查询
朱书栋
Windows Azure
weblogs
Windows Azure
微软Windows Azure Platform中文博客
WPF
Vincent Sibal's Blog
WPF
台湾blog
积分与排名
积分 -    699864
排名 -    105
最新评论
1. Re:SSL协议详解
最后的总结出现了笔误,应该是"使用记录协议对交换的数据进行加密和签名"
--urwng
2. Re:DataGridView打印类
@麒麟楼主,请教一个问题.我把这个类放到我项目(改了命名空间),只要全是数字和英文的数据源,打印预览就显示不出来,打印就有数据.但是呢,我单独拿来用什么都不改就不会有这个问题.不知楼主有什么可以指点的......
--夜之盾
3. Re:WPF+WCF一步一步打造音频聊天室(四):视频会话
楼主,源码能发我一份吗?
--拼命三郎bai
4. Re:iOS开发之在地图上绘制出你运行的轨迹
能留个demo吗!谢谢了!1039537615@qq.com
--Free天空之城
5. Re:WPF+WCF一步一步打造音频聊天室(四):视频会话
楼主发份源码学习下把 谢谢啦!
学习 一下,
谢谢啦。
--越走越黑渐行渐远
6. Re:利用.NET Framework4.0的源代码调试你的应用程序
下载包没了 还有能调试布局的Measure 方法么
--Romayn
7. Re:微信公众平台向特定用户推送消息
今天借鉴楼主的代码结合最新自己抓包少修少改了下,发现还可以用,3Q
--有点不懂
8. Re:WF4.0实战(二十二):一个实际生活中状态机的例子
你好,请问一下,为什么我下载代码后DoorStateMachine.xaml里的StateMachine看不到流程呢。只有标题行“StateMachine”
--gdxwx
9. Re:WF4.0工作流设计器
LZ,最近看了你的WF文章,对我有非常大的启发,但有个问题我想咨询一下,假如我有这样一个功能,我自定义流程完成后,但点开始运行流程的按钮后,我需要在界面上看到当前流程运行在哪,而且每一步流程我都可以在......
--奔跑的牛排
10. Re:如何正确地使用#region指令
喜欢这种写法public class SomeClass{ [Events] [Fields] [Properties] [Methods]},支持楼主...
--小青年
阅读排行榜
1. iOS开发之UIWebView(147907)
2. iOS开发之Objective-C与JavaScript的交互(62056)
3. 超级简单:DIV布局(39033)
4. 使用fiddler模拟http请求(37376)
5. iPhone消息推送机制实现与探讨(35301)
6. 50个Demo展示HTML5无穷的魅力(28672)
7. iOS开发之多媒体播放(27463)
8. 微信公众平台向特定用户推送消息(27137)
9. iOS开发之缓存(一):内存缓存(26323)
10. WPF与WinForm的抉择(22304)
评论排行榜
1. 18个不常见的C#关键字,您使用过几个?(151)
2. 一种简单的直观的高效的权限设计(134)
3. 实现Visual Studio 2010一个很简单的很酷的扩展(101)
4. 给.net投上一票(92)
5. 浅谈自己去设计的一套简单的系统架构(91)
6. 如何成为人尽皆知的C#开发人员(72)
7. Visual Studio 2020一些遐想(68)
8. 实现基于ASP.NET MVC快速开发平台(61)
9. 一位程序员的爱情故事(58)
10. 一步一步教你在GridView中实现可收缩的面板(56)
推荐排行榜
1. 18个不常见的C#关键字,您使用过几个?(109)
2. 一种简单的直观的高效的权限设计(64)
3. 实现Visual Studio 2010一个很简单的很酷的扩展(62)
4. WPF、WCF、WF打造Hello World程序(50)
5. 给.net投上一票(41)
6. 一位程序员的爱情故事(41)
7. 一步一步教你在GridView中实现可收缩的面板(38)
8. 50个Demo展示HTML5无穷的魅力(26)
9. WF4.0实战系列索引(24)
10. 通过FxCop来验证.NET编码规范(21)
Copyright ©2016 麒麟
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值