`
亚当爱上java
  • 浏览: 698587 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SSL协议的握手过程

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

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

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

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

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

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

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

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

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

  ⑨服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。
  ⑩SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。

双向认证 SSL 协议的具体过程

  ① 浏览器发送一个连接请求给安全服务器。

  ② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器。

  ③ 客户浏览器检查服务器送过来的证书是否是由自己信赖的 CA 中心所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告消息:警告客户这个证书不是可以信赖的,询问客户是否需要继续。

  ④ 接着客户浏览器比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。

  ⑤ 服务器要求客户发送客户自己的证书。收到后,服务器验证客户的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的公钥。

  ⑥ 客户浏览器告诉服务器自己所能够支持的通讯对称密码方案。

  ⑦ 服务器从客户发送过来的密码方案中,选择一种加密程度最高的密码方案,用客户的公钥加过密后通知浏览器。

  ⑧ 浏览器针对这个密码方案,选择一个通话密钥,接着用服务器的公钥加过密后发送给服务器。

  ⑨ 服务器接收到浏览器送过来的消息,用自己的私钥解密,获得通话密钥。

  ⑩ 服务器、浏览器接下来的通讯都是用对称密码方案,对称密钥是加过密的。

  上面所述的是双向认证 SSL 协议的具体通讯过程,这种情况要求服务器和用户双方都有证书。单向认证 SSL 协议不需要客户拥有 CA 证书,具体的过程相对于上面的步骤,只需将服务器端验证客户证书的过程去掉,以及在协商对称密码方案,对称通话密钥时,服务器发送给客户的是没有加过密的(这并不影响 SSL 过程的安全性)密码方案。 这样,双方具体的通讯内容,就是加过密的数据,如果有第三方攻击,获得的只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的安全就依赖于密码方案的安全。而幸运的是,目前所用的密码方案,只要通讯密钥长度足够的长,就足够的安全。这也是我们强调要求使用 128 位加密通讯的原因。

证书各部分的含义

Version         证书版本号,不同版本的证书格式不同
Serial Number      序列号,同一身份验证机构签发的证书序列号唯一
Algorithm Identifier   签名算法,包括必要的参数 Issuer 身份验证机构的标识信息
Period of Validity    有效期
Subject         证书持有人的标识信息
Subject’s Public Key  证书持有人的公钥
Signature        身份验证机构对证书的签名

证书的格式  认证中心所发放的证书均遵循 X.509 V3 标准,其基本格式如下:

证书版本号(Certificate Format Version)
含义:用来指定证书格式采用的 X.509 版本号。

证书序列号(Certificate Serial Number)
含义:用来指定证书的唯一序列号,以标识 CA 发出的所有公钥证书。

签名(Signature) 算法标识(Algorithm Identifier)
含义:用来指定 CA 签发证书所用的签名算法。

签发此证书的 CA 名称(Issuer )
含义:用来指定签发证书的 CA 的 X.500 唯一名称(DN, Distinguished Name)。

证书有效期(Validity Period) 起始日期(notBefore) 终止日期(notAfter)
含义:用来指定证书起始日期和终止日期。

用户名称(Subject)
含义:用来指定证书用户的 X.500 唯一名称(DN,Distinguished Name)。

用户公钥信息(Subject Public Key Information) 算法(algorithm) 算法标识(Algorithm Identifier) 用户公钥(subject Public Key)
含义:用来标识公钥使用的算法,并包含公钥本身。

证书扩充部分(扩展域)(Extensions)
含义:用来指定额外信息。 

X.509 V3 证书的扩充部分(扩展域)及实现方法如下:

CA 的公钥标识(Authority Key Identifier)
公钥标识(SET 未使用)(Key Identifier)
签发证书者证书的签发者的甄别名(Certificate Issuer)
签发证书者证书的序列号(Certificate Serial Number)

X.509 V3 证书的扩充部分(扩展域)及实现CA 的公钥标识(Authority Key Identifier)
公钥标识(SET 未使用)(Key Identifier)

签发证书者证书的签发者的甄别名(Certificat签发证书者证书的序列号(Certificate Serial Number)
含义:CA 签名证书所用的密钥对的唯一标识用户的公钥标识(Subject Key Identifier) 
含义:用来标识与证书中公钥相关的特定密钥进行解密。

证书中的公钥用途(Key Usage)

含义:用来指定公钥用途。

用户的私钥有效期(Private Key Usage Period) 起始日期(Note Before) 终止日期(Note After)
含义:用来指定用户签名私钥的起始日期和终止日期。

CA 承认的证书政策列表(Certificate Policies)
含义:用来指定用户证书所适用的政策,证书政策可由对象标识符表示。

用户的代用名(Substitutional Name)
含义:用来指定用户的代用名。

CA 的代用名(Issuer Alt Name)
含义:用来指定 CA 的代用名。

基本制约(Basic Constraints)
含义:用来表明证书用户是最终用户还是 CA。 在 SET 系统中有一些私有扩充部分(扩展域)Hashed Root Key 含义:只在根证书中使用,用于证书更新时进行回溯。

证书类型(Certificate Type)
含义:用来区别不同的实体。该项是必选的。

商户数据(Merchant Data)
含义:包含支付网关需要的所有商户信息。

持卡人证书需求(Card Cert Required)
含义:显示支付网关是否支持与没有证书的持卡人进行交易。

SET 扩展(SETExtensions)
含义:列出支付网关支持的支付命令的 SET 信息扩展。

CRL 数据定义版本(Version)
含义:显示 CRL 的版本号。

CRL 的签发者(Issuer)
含义:指明签发 CRL 的 CA 的甄别名。

CRL 发布时间(this Update) 预计下一个 CRL 更新时间(Next Update) 撤销证书信息目录(Revoked Certificates) CRL 扩展(CRL Extension) CA 的公钥标识(Authority Key Identifier) CRL 号(CRL Number)
分享到:
评论

相关推荐

    ssl握手协议

    为了便于更好的认识和理解SSL 协议,这里着重介绍SSL 协议的握手协议。介绍SSL协议双向认证的具体过程。

    SSL交互和握手过程

    SSL交互和握手过程 SSL消息按如下顺序发送: 1.Client Hello 客户发送服务器信息,包括它所支持的密码组。密码组中有密码算法和钥匙大小; 2.Server Hello 服务器选择客户和服务器都支持的密码组到客户。 3....

    HTTPS连接 解析 ssl

    详细介绍https连接的主要过程,ssl协议握手过程,解析传输数据

    SSL协议及其安全威胁分析

    SSL协议简介、握手过程、工作原理、及其面临的安全问题和安全威胁

    HTTPS协议详解(四):TLS:SSL握手过程1

    1、握手与密钥协商过程 2、会话缓存握手过程 3、重建连接

    SSL网络安全技术白皮书.docx

    协议安全机制 SSL协议实现的安全机制包括: 数据传输的机密性:利用对称密钥算法对传输的数据进行加密。 身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。 ...

    SSL_handshake_with_two_way_authentication_with_certificates

    HTTPS连接时,采用证书认证时的双向握手协议过程分析。

    网络安全协议(PPT-146页).pptx

    SMTP IP SSL TCP HTTP FTP 17 SSL协议—1 概况 SSL提供一个安全的"握手"来初始化一个TCP/IP连接 建立TCP"连接" SSL握手,建立SSL会话 完成客户端和服务器之间关于安全等级、密码算法、通信密钥的协商,以及执行对...

    用Wireshark简单分析HTTPS传输过程-抓包过程 - manjingliu的编程之旅 - CSDN博客1

    摘要视图订阅manjingliu的编程之旅在校学,认真学编程登录 | 注册登录 | 注册安全(38)76494次千里之外15篇221篇1篇1条三、开始监听htt

    wossl:OpenSSL对称算法、哈希校验、非对称算法、证书管理、SSL安全

    SSL检测:握手过程探测、协议/加密套件、SSL常见漏洞扫描。 开发环境: 基于Python2.7,具体依赖库请参考requirements或pip install -r requirements在线安装。 托管 官网: 码云: Github: 交流群:3

    面试:复习资料汇总

    SSL记录层协议(SSL记录协议)SSL握手协议(SSL握手协议)提供服务方和客户方相互认证 2.知识点总结 具体过程 双方协商SSL版本,加密算法,压缩算法 双方交换数字证书(认证过的公钥) 双方共识DH算法,分别产生...

    javasnmp源码-Interview-Notes:采访笔记

    握手3个包,ssl 握手9个包,一共12个包) - 默认端口:http 80,https 443 发散问题:ssl 怎么握手的? https 的加密过程 1. 客户端发起 HTTPS 请求 2. 服务端拿出配置好的一套 HTTPS 证书,(自己制作或组织申请) 3....

    网络安全简答题 2.docx

    14、什么是三次握手四次挥手?tcp为什么要三次.… 15、GET和POST的区别 16、Cookiesi和session区别 17、session的工作原理? 18、一次完整的HTTP请求过程 19、HTTPS和HTTP的区别 20、OS1的七层模型都有哪些? 21、...

    网络操作系统试卷及答案

    1.简述网络操作系统的主要特点? 2.为确保服务器的安全,写出Windows2003系统中推荐的安全审核事件?...3.在Web服务器的安全连接过程中,简述SSL握手协议的4个阶段? 4.什么是虚拟主机? 5.请简述DHCP的工作过程。

    TechnicalMap:Technical knowledge map 技术类知识相关图谱

    :handshake: 双向证书认证的SSL握手过程 SSL handshake with two way authentication with certificates :bar_chart: 数据结构与算法的时间/空间复杂度 Complexity of datastructure/algorithm :counterclockwise_...

    CCNA网络安全.doc

    A数据保密性 B 数据完整性 C访问控制服务 D 认证服务 填空题 2 安全套层SSL协议是在网络传输过程中,提供通信双方网络信息 保密性 和 可靠性 。由 SSL记录协议 和 SSL握手协议 两层组成。 4. P93 108 129 黑客...

    FEBlog:积累前端相关的文章,向高级前端出发

    使用wireSharp分析TLS握手过程 URI与URL傻傻分不清楚? Vue 简述VUE的响应式原理 抽丝剥茧般的阅读源码,将$nextTick()拉下神坛! 挖掘隐藏在源码中的Vue技巧! 分享:使用vue2.0开发移动端应用时遇到的坑与解决方法...

    详解HTTPS 的原理和 NodeJS 的实现

    握手流程 HTTPS链接的建立过程中涉及到服务器端证书、客户端证书(可选)、服务器端的非对称秘钥以及后续通信过程中使用的对称秘钥几个内容。 客户端对HTTPS的地址发出请求,并且将自己的SSL版本号等信息发送给...

    网络安全解答题.docx

    为了验证证书持有者是其合法用户(而不是冒名用户), SSL要求证书持有者在握手时相互交换数字证书,通过验证来保证对方身份的合法性。 宿舍里面机子可以上网,某台机子开机后不可以上互联网,但可以访问局域网共享资源...

    网络安全知识竞赛小测试--网络攻击技术.pdf

    一种病毒的名称 20、TCP SYN 泛洪攻击的原理是利用了( )[单选题] * A.TCP 三次握手过程(正确答案) B.TCP 面向流的工作机制 C.TCP 数据传输中的窗口技术 D.TCP 连接终止时的 FIN 报文 21、以下对 TCP 协议发起连接...

Global site tag (gtag.js) - Google Analytics