Skype for business/Lync之证书解析(一):证书原理
由于下面的文章是我原来在内部技术交流的一个PPT,所以文章主要以图为主,对于需要说明的部分我再配以文字。
要说证书,实际上先得说公钥技术,严格来说,他们是有区别的,但有时我们习惯把证书、公钥、PKI、CA说成一个东西,怎么说我倒觉得不重要,只是在不同的语境下要会分辨。
上图是大家经常遇到的,为什么会报这个错呢?不用我这里先做解释,读完此文,你自己就知道了,如果还不知道,那就。。再读一遍呗。
单密钥的缺点是怎么安全地分发。
公钥解决了分发问题,因为公钥谁都可以知道,而且就是要别人知道。
上图警察为了把消息安全地告诉局长,于是他就用局长的公钥加密消息(记住,公钥就是给别人的,就是要让别人知道的),局长接着用自己的私钥解开。
那你会说为什么警察(周缙)要用局长的公钥加密,而不用自己的私钥加密再发给局长呢?不是一样的吗?当然不一样,因为我们说过公钥别人知道,你用私钥加密那不是人人都可以用公钥解密,这就相当于没有加密了,所以私钥是不会用来加密的,只有公钥才会用来加密。
但是,虽然私钥不用来加密,但由于私钥只有当事人有,所以它可以用来进行身份认证,还是上面的例子,局长收到了一条他公钥加密的消息,但由于别人都有他的公钥,谁都可以发消息给他啊,怎样来保证这个消息就是警察周缙发的,而不是其他人发的假消息呢?(比如说是周克华发的,骗局长鸣金收兵:))这时周缙就可以用自己的私钥签个名,然后局长用周缙的公钥解密,由于只有周缙的公钥才能解密,也就证明了此消息是周缙发出的,确认了消息的真实性。
当然,公钥也可以用来认证,后面会讲到,当他与安全个体对应,成为安全个体证书的一部分时,就有此功能了,具体下面会讲到。
既然单密钥技术和公钥技术各有优缺点,何不把二者结合起来,既然公钥加解密速度慢,那何不用公钥加密单密钥(毕竟单密钥很短,要加密的文档或信息通常很大),然后用单密钥来加解密文档或信息,这样不就把单密钥的分发和公钥加解密速度问题都解决了?实际上SSL就是这样来处理的。
当然用私钥加密同样面临速度慢的问题,那私钥怎样来实现签名(本质是加密)呢?由于直接签名(加密)整个文档太慢,那就把文档提取个散列,然后签名这个散列吧,这样就解决了这个问题。大家下载软件时,经常看到有个MD5的文件,大家就可以通过MD5工具对下载的软件生成一个MD5散列值,然后与MD5文件中的值对比,如果一致,表明你下载的软件没有被篡改(比如被人挂马)。
前面讲了,虽然公钥可以发给任何人,但怎样确认你就是这个公钥的主人呢?这个问题就像邮件如果没有SPF检测,你可以冒充微软、冒充IBM,冒充任何公司或个人给别人发邮件了。其实在这里我想也可以模仿邮件的SPF机制,比如你收到张三的公钥,那怎样来判断这个公钥就是张三的呢?那你可以先计算出公钥的散列,然后到张×××司的DNS服务器查询张×××钥的散列(比如是一条TXT记录),如果二者相匹配,则表明是张三的公钥,如果不匹配,则表明是仿冒的。哈哈,我是不是想得太简单了,不过,现在的世界是怎样来解决这个问题的呢?现在的世界就是引入了证书,引入了证书认证机构CA,所谓证书者,证明之用也,就是把安全个体与公钥绑定,证明此公钥就是安全个体的,当然,如何证明,就由CA等的证书基础架构来实现了。
证书包含公钥,但不等于公钥。
大家的SFZ其实就是一份证书,证书也就是一个SFZ。
比如证书里面的版本就相当于SFZ的第几代,而序列号就相当于SFZ号码,颁发者相当于签发机关,有效期相当于SFZ的有效期限,而上级CA的签名相当于国徽(代表国家)。而使用者相当于姓名。
记住证书包含的三个最重要的部分:安全个体(CN),公钥,上级认证(签名)。比如CN是www.sina.com.cn,而你访问时不是用这个域名访问,而是用域名对应的IP去访问,仍然会报证书错误的,因为安全个体没有对应上。
现实世界申请证书是一件严肃的事情,就像办SFZ一样的道理,注意,你申请证书时是不用把私钥提交给CA的,因为私钥只应该你自己知道和保存,所以你在购买公网证书服务时通常最后有个合成操作,就是把本地的私钥和证书进行合成,以便导入相关的服务器。
从证书的验证过程注意到根证书是很重要的,因为一个证书是否合法,最终都会由它进行验证。这也是为什么为了信任服务器证书,而经常要在客户端导入根证书的原因,因为没有根证书,根本无法验证服务器证书的真实性。经常看到一个无意义的操作就是把服务器证书导入客户端,其实这没有意义,因为没有信任根证书,你把服务器证书放在哪里都无用。
同样,购买公用证书时,证书链的层次越少越好,因为一般系统只内置了根证书,如果中间证书链多的话,还需要到网上去取,这样必定增加连接时间,再加上这些机构一般在国外,你可能会遇到什么连接超时等问题,这种坏的结果是你应用根本没法用。
证书吊销列表也是在证书实施中经常遇到的问题,很多报错与它就相关,有些应用有相关选项来配置是否检查CRL,如IE,而有些应用则必须要求检查CRL,这时就要注意CRL的正确发布了,比如通常CA在内部,CRL也在内部,那如果有应用要从外部访问CRL时,如果没有发布CRL,是根本不可能访问到的,这也就出现了CRL问题。
注意,通常我们的SSL,也就是HTTPS,通常只验证服务器的身份,服务器会把它的证书传给客户端,客户端会调用本地根证书进行验证。类似我们访问普通的网银。
而我们插U卡的网银,则是不仅仅要验证服务器是不是假冒的,还要验证客户端这边的身份,这就是双向验证。
好了,关于公钥与证书的基本原理就讲到这里,如果有疑惑,欢迎提问。
“51cto十周年博客活动”正在进行,你也来参加吧~
活动地址:http://51ctoblog.blog.51cto.com/26414/1679643
转载于:https://blog.51cto.com/ultradream/1654190
Skype for business/Lync之证书解析(一):证书原理相关推荐
- lync2010服务器证书,无法登录 Skype for Business Online,因为无法获取证书 | Microsoft Docs...
无法登录 Skype for Business Online,因为无法获取或验证证书 2021/6/7 适用于: Skype for Business Online, Lync 2013, Lync ...
- 修改注册表解决Skype for Business(Lync) 不能登录的问题
方法一 1.手动修改注册表 将"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\office\16.0\lync"路径下"c ...
- SFB 项目经验-12-为某上市企业的Skype for Business购买Godday证书
<要想看Lync 2013升级SFB 2015真实项目经验:请看Lync 项目经验-01-到-Lync 项目经验-10> 本系列博文: Lync 项目经验-01-共存迁移-Lync2013 ...
- Simple Understanding of Skype for Business Databases
Howdy, in the journey of moving my old articles from Lyncdude.com to this blog I decided to include ...
- lync服务器不响应或无法联系,Lync 用户无法与外部联系人通信 - Skype for Business | Microsoft Docs...
Lync 用户无法与具有 Microsoft 帐户的外部联系人通信,这些联系人在 EASI 域中 () 帐户 2021/4/8 适用于: Skype for Business Online, Lync ...
- Lync 2013就地升级到Skype for Business 2015-01
需求 在我们将服务器升级到Skype for Business 2015之前,我们当前的环境需要满足以下要求: · Microsoft Lync Server 2013 CU5(Febr ...
- Lync 2013持久聊天迁移至Skype for Business
前几篇文章已经讲解了Lync就地升级至Skype for Business,原来Lync中建的持久聊天室如何迁移到SkypeForBusiness,下面讲解详细迁移步骤. 一.基本信息 Lync与SF ...
- Lync / Skype for Business登录界面UI切换
Lync客户端更新后,不能正常使用Skype for Business,导致只能使用Lync,系统提示如下: 您有较新的 Lync 版本,名称为 Skype for Business.但是您的管理员希 ...
- Skype for Business 2016或Lync 2013安装在Windows7上闪退
很多人现在可能还在使用Windows7,但是最近发现了一个奇怪的现象,将Skype for Business 2016或Lync 2013安装在Windows7上会出现闪退. 背景:客户新安装Win7 ...
最新文章
- Tomcat - 模拟Tomcat的webappClassLoader加载自己war包应用内不同版本类实现相互共存与隔离
- 给文本框添加模糊搜索功能(“我记录”MVC框架下实现)
- ROS探索总结(十二)——坐标系统
- freemarker -自定义指令
- 怎么将一个数字高低位互换_多彩数字 多彩童年——东城幼儿园玩具研究教学案例...
- python何时用list,dict,set
- vs2012 MSDN帮助文档离线包下载安装方法
- linux命令最终篇
- python实现完整的特征工程,实践论文中的分类模型和方法用于恶意页面的分类与识别
- mysql有varchar2吗_char、varchar、varchar2区别
- 安装studio3t
- Android手势密码解锁
- oracle excel vba6,如何在WPS个人Excel表格中启用宏功能来使用VBA
- 优化设计和计算机辅助,湿式空冷器优化设计和计算机辅助计算
- hive 学习系列五(hive 和elasticsearch 的交互,很详细哦,我又来吹liubi了)
- Android WiFi only配置
- 使用 Wall 搭建个人照片墙和视频墙
- yxy小菊蒻的201130总结
- ZYNQ7000 学习(三十) 定时器终端的原理和实现
- 锐龙AMD处理器 AndroidStudio无法安装使用安卓模拟器/虚拟机
热门文章
- Java 中String的split函数简介
- 基于OpenHarmony的智能电饭煲
- 网页背景图片加遮罩层详解
- 前端显示图片加token
- 正版推荐 - Fences 4 – 让你的桌面更加整洁与高效的桌面图标文件整理工具软件!
- 【问卷有奖奖奖奖奖】云栖大会调研问卷~!甜美小姐姐贡献全部身家只求真心话...
- vegfr2药物|适应症|市场销售数据-上市药品前景分析
- datagridview选中获取行号_请问c# 的winform 怎么获取 datagridview选中的行数和列数啊...
- 降级移除宝塔官网账号绑定限制的方法
- Excel学习笔记5||日期时间函数NOW、DATE、DATEDIF、WEEKDAY... ...