`

WSS - Https - 握手协议

阅读更多

<!--[if !supportLists]-->   <!--[endif]-->SSL协议的握手过程 为了便于更好的认识和理解 SSL 协议,这里着重介绍 SSL 协议的握手协议。SSL 协议既用到了公钥加密技术(非对称)又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:


  ①客户端的浏览器向服务器传送客户端 SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。

<!--[if !supportLists]-->   <!--[endif]-->
  ②服务器向客户端传送 SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书

 

<!--[if !supportLists]-->   <!--[endif]-->  ③客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的 CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。

<!--[if !supportLists]-->   <!--[endif]-->  ④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。

<!--[if !supportLists]-->   <!--[endif]--> 
  ⑤如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。

 

<!--[if !supportLists]-->   <!--[endif]-->   ⑥如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA 是否可靠,发行CA 的公钥能否正确解开客户证书的发行 CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的预主密码,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。


  ⑦服务器和客户端用相同的主密码即通话密码,一个对称密钥用于 SSL 协议的安全数据通讯的加解密通讯。同时在 SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。


  ⑧客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。


  ⑨服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。


  ⑩SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。

<!--[if !supportLists]-->   <!--[endif]--> 

分享到:
评论
1 楼 gaoyuanyuan121 2012-05-09  
很详细,学习了~

相关推荐

    易语言-WebSocket协议通信

    生成握手加密用WebSocket-Key,并与WebSocket服务器连接2.加密数据3.实现登陆与聊天功能程序中只使用了精易模块,请自行导入.程序界面比较简陋主要是实现通信部分,有需求的可以自行完善其他功能另:对WebSoket感兴趣但...

    Android 实现WebSocket长连接

    Android 实现WebSocket长连接 ...7、协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。 ———————————————— 原文链接:https://blog.csdn.net/lou_liang/article/details/123879895

    PHP 实现 WebSocket 协议原理与应用详解

    本文实例讲述了PHP 实现 WebSocket 协议原理与应用。分享给大家供大家参考,具体如下: ... WebSocket 是什么?...在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行

    C#实现WebSocket源码(c#写的服务端html写的客户端)

    WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以...(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

    基于Netty的WebSocket实现,使用注解快速实现websocket服务.rar

    WebSocket是一种在单个TCP连接上进行全双工通信的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许...Websocket使用ws或wss的统一资源标志符,类似于HTTPS,其中wss表示在TLS之上的Websocket.

    基于Swoole的Socket Server.Client.Http 开发框架.rar

    在此之前,有必要对 WebSocket 的原理做简单的说明,WebSocket 复用了 HTTP 协议来实现握手,然后通过请求报文中的 Upgrade 字段将 HTTP 协议升级到 WebSocket 协议来建立 WebSocket 通信连接,一旦 WebSocket 连接...

    详解nginx websocket配置

    WebSocket工作在HTTP的80和443端口并使用前缀ws://或者wss://进行协议标注,在建立连接时使用HTTP/1.1的101状态码进行协议切换,当前标准不支持两个客户端之间不借助HTTP直接建立Websocket连接。 二.创建基于Node的...

    websocket

    其协议标识符为ws,如果加密使用wss,服务器网址为URL,如: ws://www.example.com/ wss://www.example.com/ Webscoket具有以下优点: 较少的控制开销:在连接创建后,服务器和客户端之间交换数据时,用于协议控制的...

    simple-chatroom-realtime:使用Java websocket实时进行聊天室

    websocket的标准协议对于常规标准是ws://,对于安全标准是wss://(类似于http://和https://)。 因此,在设置服务器链接时,您将不得不使用ws:// localhost / xxx而不是 。 范例: var webSocket = new ...

    WebSocket实战之——JavaScript例子

     二、主要代码解读:1、申请一个WebSocket对象参数是需要连接的服务器端的地址,同http协议使用http://开头一样,WebSocket协议的URL使用ws://开头,另外安全的WebSocket协议使用wss://开头。2、WebSocket对象一共...

    websockify:Websockify是一个WebSocket到TCP代理桥。 这允许浏览器连接到任何应用程序服务器服务。 Python,C,Node.js和Ruby中的实现

    Websockify接受WebSockets握手,对其进行解析,然后开始在两个方向上在客户端和目标之间转发流量。 新闻/帮助/联系方式 重要的提交,公告和新闻发布到 如果您是websockify开发人员/集成商/用户(或希望成为),请...

Global site tag (gtag.js) - Google Analytics