ssl20协议Word文档下载推荐.docx
《ssl20协议Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ssl20协议Word文档下载推荐.docx(6页珍藏版)》请在冰豆网上搜索。
openssl使用指南
openssl建立ssl连接例子程序
openssl重大漏洞——心脏流血,那是什么,如何补救
心脏出血漏洞,如果网站配置了一项名为“perfectforwardsecrecy”的功能,那么这一漏
洞的影响将被大幅减小。
该功能会改变安全密钥,因此即使某一特定密钥被获得,攻击者无法解密以往和未来的加密数据。
openssl漏洞补救办法详解(图文)
具体修补方式为:
openssl版本升级到最新的1.0.1g重新生成你的私钥
请求和替换ssl的证书
也可以使用-dopenssl_no_heaRtbeats参数重新编译低版本的openssl以禁用
heartbleed模块,最新版本升级地址为:
https:
//www.openssl.org/source/.(openssl官方)
ssl/tls
如果服务端只设置了一种加密套件,那么客户端要么接受要么返回错误。
加密套件的选择是由服务端做出的。
用openssl编写ssl,tls程序
(1)
【winlinkopenssl实现】
应用到模块:
服务器之间通讯tcpmodule,web通讯clientproxy,托管服务器通讯dataproxysocketserver侧。
协议通讯与调用过程图示:
官网:
ssl版本,1.0,2.0,3.0
openssl版本,1.0.2a(可能不稳定,20xx-3-19),1.0.1m(最新稳定版本,20xx-3-19)
篇二:
第一章.ssl握手协议的研究
1.第一章.对ssl的基本概念和框架的介绍
2.第二章.对ssl握手协议的研究(part-1)
3.第三章.对ssl握手协议的研究(part-2)
4.第四章.对ssl握手协议细节和实现的介绍
5.第五章.对ssl记录协议细节和实现的介绍
6.第六章.对ssl的安全性分析
7.第七章.举例一种将usbkey融入javajsse框架的解决方案
sl握手过程即完成身份认证和建立加密通道的过程,分为四种。
――Fullhandshake:
全流程握手,c/s双方从无到有建立ssl连接;
――Resumsessionhandshake:
c/s双方曾经建立过连接,但中途断了,ssl会话信息还有保留,只需要执行部分握手流程就可建立ssl连接;
――serverRe-negotiationhandshake:
已经建立了ssl连接,但server端为了某些原因(比如安全性)要求重新对密钥进行协商,也只需要执行部分握手流程;
――clientRe-negotiationhandshake:
已经建立ssl连接,但client端为了某些原因要求重新协商,只需执行部分握手流程。
Fullhandshake
这里主要介绍全流程握手,握手步骤如下图所示,其他的握手过程都属于全流程的子集。
ssl握手协议总共有10中消息类型,类型名和枚举值如下:
hello_request(0),client_hello
(1),server_hello
(2),certificate(11),server_key_exchange(12),certificate_request(13),server_done(14),certificate_verify(15),client_key_exchange(16),finished(20)
所有的握手消息有统一的结构:
struct{
handshaketypemsg_type;
/*握手消息类型,如上所述的枚举值*/uint24length;
/*握手消息体的长度用24位表示,即最大长度不超过16m*/
handshakemsgpayload/*握手消息的有效荷载,上面列的10类型之一*/
}handshake;
clienthello阶段
客户端首先发clienthello消息到服务器端,服务器端收到hello消息后再发serverhello消息回应客户端。
clienthello和serverhello消息结构如下:
protocolVersionclient_version;
Randomrandom;
sessionidsession_id;
ciphersuitecipher_suites;
compressionmethodcompression_methods;
}clienthello;
protocolVersionserver_version;
ciphersuitecipher_suite;
compressionmethodcompression_method;
}serverhello;
选择ssl通信,当底层连接建立好后会触发或调用ssl的初始化和握手,握手由clinet端发出clienthello消息开始。
clienthello消息
protocolVersion:
消息中协议版本是两个byte长度分别表示主次版本,如若在jaVa中初始化sslcontext时候选择了sslv3则主版本号是3,次版本号为0,若选择了tlsv1(tlsv1相当sslv3的升级版)则主版本号是3,次版本号是1。
Random:
随机数结构,由两部分组成,
uint32gmt_unix_time;
opaquerandom_bytes[28];
}Random;
一个4字节的系统当前时间,一个28位长的随机数,在后面计算所有消息的摘要或计算主密钥时候会用到。
(疑惑1:
在java的jsse实现版本中貌似只有一个4字节的系统当前时间,没有28位的随机数,奇怪了,怎么和非jsse版
本实现正确握手的啊…)
sessionid:
ssl会话id标识一次会话用,可以重用。
会话id都是由服务器分配因此在全流程握手中clienthello消息中的sessionid是空,用字节0表示。
ciphersuitlist:
密钥套件列表,列表中包含了client端支持的所有密钥套件。
一个密钥套件定义了一个密钥规格,其中描述如下内容:
密钥交换算法,是否出口,对称加密算法,支持的最高对称密钥位数,mac算法(或摘要算法)。
一个ciphersuit用2个字节表示,下面列举jsse支持的几个套件:
ssl_Rsa_with_Rc4_128_md5=0x0004/*非对称加密算法或密钥交换算法为Rsa,采用高强度128位对称加密算法Rc4,摘要或mac算法为md5,不支持出口*/
ssl_dhe_Rsa_expoRt_with_des40_cbc_sha=0x0014/*非对称加密算法或密钥交换算法支持Rsa和dh,采用40位对称加密算法des,摘要或mac算法为sha,可以出口*/
关于出口,美帝国主义要求要用他们的加密算法比如jdk中的jsse,对称加密密钥长度不能超过40,非对称密钥长度不超过512,在国内只能使用这种低强度的玩意,赤裸裸的技术封锁啊。
这个加密套件列表长度不超过128k。
compressionmethods:
客户端支持的压缩算法列表,填0表示空,jsse会有默认算法。
clienthello承载着这些信息被发送到server端。
serverhello阶段
serverhello消息
服务端服务器拿出消息中的版本号,再看看自己支持的版本列表,选个两者都支持的最高版本号定为这次协商出来的ssl协议使用的版本。
比如c端发过来
ssl
3.0,而s端发现自己只支持ssl2.0,server就会选择ssl2.0作为这次协商版本,反之若server支持ssl2.0,ssl3.0,tls1.0,选两者都支持的最高版本ssl3.0。
Random:
产生的方式和clienthello中相同。
服务端检测到传过来的sessionid是空或者检索session列表没有发现传过来的sessionid就会新建一个,jsse中sessionid是取系统时间的前32位(系统时间是long类型64位,只取其中32位)。
ciphersuit:
server端收到密钥套件列表后,将密钥套件一个个拿出来,经过几道检查,选择第一个通过检查的套件。
jsse实现的ssl协议中的检查项目有如下几项:
检查服务端是否也支持这个套件,检查这个套件是不是被禁用(的确是支持某个套件,但出于某些原因被禁用了),检查套件是否符合出口限制,比如在国内加密强度128或256位的对称密钥在检查时候就会被认为不合法pass掉;
若server端启用了双向认证,某些不支持双向认证的套件就会被pass掉。
层层选拔,第一个通过的幸运儿光荣的成为密钥协商的成果,被放入serverhello消息中。
这样serverhello消息组装好了,发出去告诉客户端协商的ssl版本和加密套件,并创建了一个会话,hello阶段结束。
服务发送证书(servercertificates可选)消息
在服务器发送完hello消息后接下来可以发送3个可选消息,服务器证书消息,服务器证书交换消息,客户端证书请求消息。
服务器证书消息在全流程握手中一般是必须发的(疑惑2:
不知道除了session重用外在什么情况下服务器端不需要发送证书过去?
),但是在会话重用的消息中就不需要再发。
服务器证书中包含公钥,发给客户端用来验证签名或在密钥交换时候给消息加密。
证书消息是紧跟着serverhello消息发送,证书消息中就是一个证书列表,证书应该转换成asn.1deR格式,不支持pkcs7格式。
证书链中的证书挨个取下来放入列表中,按照次序服务器自己的证书放列表最前头,根ca证书放列表最后,证书链长度不超过16m。
服务端密钥交换消息(serverkeyexchange可选)
说到这个不得不介绍下ssl密钥交换方式。
安全加密通信是发送方将信息加密,接收方将信息解密,加解密用的密钥分两类:
对称和非对称加密(具体概念google之)。
非对称加密的最大优点是可以将一部分密钥公开,叫公钥(publickey),这样通信双方交换密钥很简单,a和b通信,a有一个密钥对pri-a和pub-a,b也有一个密钥对pri-b和pub-b,ab互相交换自己公钥,a用pub-b加密要发给b的
篇三:
sslVpn入门之ssl协议
sslVpn入门之
ssl协议
华为赛门铁克科技有限公司
版权所有不得复制
二零一一年
20xx-2-6
华赛机密,未经许可不得扩散
第1页,共15页
目录
第1章概述........................................................................