首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
一个实际问题分析及解决之二:理解SSL协议
时间:
2016-05-13 02:03:20
阅读:
180
评论:
0
收藏:
0
[点我收藏+]
标签:
SSL协议并不陌生,平常见到的以https开头的网站都是采用了SSL协议,虽然SSL协议加在HTTP上最为常见,但它的使用并不限于http,应该说http是在SSL协议层之上的协议,因为http协议属于应用层协议而SSL协议则属于网络层协议。
下面几篇文章对SSL协议做了详细说明:
https://en.wikipedia.org/wiki/Transport_Layer_Security
http://baike.baidu.com/view/14121.htm
我们以常见的https为例,它的工作原理就是在客户端和服务器间建立网络连接的时候,服务器会发送一个证书(certificate)给客户端表明自己的身份,通常该证书是由一个专业CA机构签发的(当然你也自己签发一个证书,但客户端一般不信任),客户端检查并接收了该证书后,双方就要协商和交换加密方法和密钥,等这些步骤完成了,一个基于SSL的网络连接也就建立了,这就是我们通常所说的握手。下面是对SSL握手过程的详细描述。
http://tse2.mm.bing.net/th?id=OIP.M4194b9e9f77470d1936cdafb0423ca16H0&pid=15.1
客户端怎么信任一个证书的签名方呢?
客户端一般维护自己的一个信任的签名方库(trust store),如果该证书的签名在自己的库里,那么就接受,否则就拒绝或警告,通常浏览器会采用警告的方式,如下面。Oracle Java也同样维护一个标准CA列表。
http://tse4.mm.bing.net/th?id=OIP.M39ac598f871f385775b5566ac205b886o0&pid=15.1
什么是双向验证?
普通的https协议一般是单向验证,用来让浏览器确保接收的网页内容是未经网络攻击者(如一些国内的电信服务商)窜改的,在这种情况下,网站提供方的shu求并不是确保客户端合规等,而是确保所有客户端接收到的内容是如实提供的内容。反过来双向检验是在单向检验(客户端检验服务器的证书)的基础上,服务器还要检验客户端是否是一个被授权的用户。如何检验?那就让客户端在建立连接时发一个表明自己身份的证书。由于每个客户端不太可能自己去CA机构上购买证书,所以一般采用的方法是服务器在前期授权用户时给用户提供一个证书,由于该证书是由服务器方提供的,所以可以为每个用户提供一个专用证书,用于在连接时识别每个客户。
由此可见,双向检验一般应用于非公共服务的情况,因为它限制客户;而单向检验往往用于公共服务,因为它不限制客户。
一个实际问题分析及解决之二:理解SSL协议
标签:
原文地址:http://blog.csdn.net/laxsong/article/details/51343994
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!