`
aiquantong
  • 浏览: 111647 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ssl 协议流程

阅读更多

最近在看公司的SSL协议实现,现将其流程总结如下:

 

 

步骤解释如下:


1.    client -> ClientHello -> server。

(1). ClientHello 消息体 = Client.Version (客户端协议版本)+ClientHello.Timestamp( 客户端时间戳) +ClientHello.Random (客户端随机数)+会话sessionID +CipherSpecs (client支持的算法集)+Certificate.SerialNumber( 服务器证书序列号)。


2.    server -> ServerHello -> client。


(1). server创建会话session ID ,缓存ClientHello.TimestampClientHello.Random ,根据CipherSpecs 的支持加密集合和server 自己支持的加密集合选择本次会话的加密算法集CipherSuite


(2).ServerHello 消息体 = Server.Version( 服务器协议版本号) +ServerHello.Timestamp (服务器时间戳)+ServerHello.Random( 服务器随机数) +sessionID (服务器会话)+CipherSuite (本次会话指定的加密算法)+ServerCertificate( 服务器公钥证书)


(3).如要验证client身份,发送CertificateRequest


3.    client -> ClientKeyExchange -> server


(1). client缓存ServerRNS(服务器随机数)ServerCertificate(服务器证书) +sessionID (服务器会话)+CipherSuite (本次会话指定的加密算法集) ,生成客户端随机数(ClientRNC)。


(2). 用 客户端协议版本号+ 随机数 生成客户端预主密钥premaster secret [PMS ], 使用 服务器证书公钥 加密 (PMS + ServerRNC }

 

(3). 如果服务器发送CertificateRequest 按顺序连接,使用客户端的私钥签名,在CertificateVerify 中发送这个签名。

 

(4). 发送ChangeCipherSpec 声明切换到加密信道传输

 

(5). 用(PMS,ServerRNS,ClientRNC)计算客户端主密钥master secret[MS ] ,生用MS成信道验证的Finished 消息。将Finished 之前发出的和接收到消息(不包括Finished 本身)的二进制数据,按照顺序连接后,使用MSPRF 签名。


4.    server -> ChangeCipherSpec -> client

 

(1). server使用私钥解密并取出{PMSRNC} 。使用PMSRNC 、RNS 计算MS

 

(2).    生成服务器的预主密钥premaster secret2 [PMS2 ] 。使用PMS2RNCRNS 生成服务器主密钥master secret2 [MS2 ] ,在会话中保存MS2 作为传输密钥。

 

(3).    如果有ClientCertificate ,验证相关信息。验证客户端的Finished 信息。如果错误,返回标准失败信息。

 

(4).    生成服务器的Finished ,将Finished 之前发出的和接收到消息(不包括Finished 本身)的二进制数据,按照顺序连接后,使用MSPRF 签名。

 

(5).    回传客户端消息 = ServerKeyExchange[用MS对称加密(PMS2)] +确认加密算法集ChangeCipherSpec +发送自己的Finished 消息。

 

5.    client收到server信息后:

 

(1).    验证服务器的Finished 消息。如失败,切断当前连接。

 

(2).    根据协商好的对称加密算法,使用本地保存的MSServerKeyExchange 。使用PMS2RNCRNS 生成MS2 作为session 密钥。在缓存中保存RNS2


 

  • 大小: 97.5 KB
分享到:
评论

相关推荐

    SSL&TLS协议簇加解密流程

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。 安全传输层协议(TLS)...

    ssl握手协议

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

    SSL交互和握手过程

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

    SSL双向认证证书制作过程流程

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接...

    数据加密解密身份认证流程Alice先用Hash算法对发送发信息即PPT课件.ppt

    一、SSL协议 SSL(Secure Sockets Layer)是一种工业标准,用于在Internet上提供安全的数据传输。它使用RSA数字签名算法,可以支持X.509证书和多种保密密钥加密算法。SSL的主要目的就是要解决Web上信息传输的安全...

    计算机网络ssl仿真实验

    SSL协议的工作流程: 1)客户端向服务器发送一个开始信息以便开始一个新的会话连接;2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的信息时将包含生成主密钥所需的信息;3)客户...

    基于SSL协议的证券交易系统分析与设计1

    第一章引言部分提出了选题的背景和意义,阐述了网上信息安全的主要问题,提出安全的重要性。第二章对证券交易系统进行深入的分析,及其安全交易流程,提出需要解决的安全问

    Java实现基于SSL的http通道(一).pdf

    本文主要讲解了 Java 语言实现基于 SSL 的 HTTP 通道的原理和实践,包括 SSL 协议的介绍、非对称加密的原理、SSL 握手流程的分析,以及 Java 语言中使用 Keytool 工具生成密钥对和证书的实践。 在网络通信中,安全...

    HTTPS工作流程 传输协议、加密算法

    "HTTPS工作流程传输协议、加密算法" HTTPS是应用层协议,实际上是HTTP协议的一种变种。HTTPS相比于HTTP多了一层SSL/TLS,其构造如下: 1. 证书加密:服务器在使用证书加密之前需要去证书颁发机构申请该服务器的...

    openssl-1.0.0a

    虽然已经有众多的软件实现了OpenSSL的功能,但是OpenSSL里面实现的SSL协议能够让我们对SSL协议有一个更加清楚的认识,因为至少存在两点:一是OpenSSL实现的SSL协议是开放源代码的,我们可以追究SSL协议实现的每一个...

    OpenSSL-1_0_0d_Win32

    什么是OpenSSL 众多的密码算法、公钥基础设施标准以及SSL协议,或许这些有趣的功能会让你产生实现所有这些算法和标准的想法。果真如此,在对你表示敬佩的同时,还是忍不住提醒你:这是一个令人望而生畏的过程。这个...

    EC800M-NC(MQTT协议连接阿里云物联网平台指导)

    采样模组内部集成MQTT协议连接到阿里云物联网平台。实现消息订阅与发布

    windows下部署免费ssl证书(letsencrypt)的方法

    要实现https,首先我们需要申请一张SSL证书,这篇文章我主要介绍下边这几个方面: 1. SSL简单介绍 ...当然它内部又分记录协议和握手协议两个部分,这里如果有兴趣的可以去详细了解一下,我先简单介绍一下流程性的

    细细品味架构·从零开始搭建高可用IM系统(第3期)

    2.1 SSL 协议详解 2.1.1 密码学概念 2.1.2 相关加密介绍 2.1.3 SSL 介绍及特性 2.1.4 SSH 的基本原理 2.2 Rss 与Feed 的概念区别 2.3 基于XMPP 协议的手机通讯方案 2.3.1 开发背景 2.3.2 Xmpp 协议介绍 2.3.3 ...

    certd:免费泛域名通配符域名SSL证书全自动申请、续期、部署,Automatically apply, renew and deploy free Generic domain SSL Certificates

    CertD CertD 是一个帮助你全自动申请和部署SSL证书...我们所说的续期,其实就是按照全套流程重新申请一份新证书。 免费证书过期时间90天,以后可能还会缩短,所以自动化部署必不可少 快速开始 本案例演示,如何配置自动

    基于JAVA的两个通用安全模块的设计与实现

    1 引言 ...3.3.2 SSL协议 3.4 数据库的设计 4 系统设计与实现 4.1 总体结构图 4.2 与数据库建立连接 4.3 口令认证及存储方式设计 4.4 数字证书创建 4.5 关键代码说明 5 测试 结 论 参考文献

    基于java爬虫的就业大数据系统设计与实现.rar(含论文+程序毕业设计)

    基于java爬虫的就业大数据系统设计与实现 1 ...4.1.4SSL协议 9 4.2系统功能模块的实现 9 4.2.1登录功能实现 10 4.2.2爬虫抓取配置功能实现 10 4.2.3爬虫抓取资源功能实现 13 参考文献: 16 致 谢 17

    PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法

    我们经常用curl来访问web站点,web站点目前主要分为http和https两种协议,众所周知https类型的网站都是通过ssl协议+http协议的,是目前最安全的网站协议,访问此类网站的时候,会走ssl协议,验证访问者的证书,检测...

    网上拍卖系统的设计与实现

    在系统的安全性方面,我们使用了SSL协议来确保敏感信息的安全传输。SSL协议是一种安全的网络通信协议,它可以确保数据的机密性和安全性。 在系统的维护方面,我们需要定期维护系统,以确保系统的稳定性和安全性。...

    acme-client, letsencrypt协议的ACME的ruby 客户端.zip

    acme-client, letsencrypt协议的ACME的ruby 客户端 Acme::Client acme-client 是 ruby 中 ACME 协议的客户端实现。你可以在go和中找到服务器插件的ACME...ACME是项目的一部分,目的是为获取和更新流程提供免费的SSL/TL

Global site tag (gtag.js) - Google Analytics