- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SSL双向认证握手过程.
SSL双向认证握手过程
客户端的浏览器向服务器传送客户端 SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。
struct {
ProtocolVersion client_version; // SSL协议版本号
Random random; // 客户端产生的随机数
SessionID session_id; // 会话标志符
CipherSuite cipher_suites0..216-1; // 客户端支持的加密算法套件
CompressionMethod compression_methods0..28 -1; // 客户端支持的数据压缩算法
} ClientHello;
服务器向客户端传送 SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
struct {
ProtocolVersion server_version; // SSL协议版本号
Random random; // 服务器端产生的随机数
SessionID session_id; // 会话标志符
CipherSuite cipher_suite; // 服务器端所支持的加密算法套件
CompressionMethod compression_method; // 服务器端所支持的数据压缩算法
} ServerHello;
opaque ASN.1Cert1..2 24 -1;
struct {
ASN.1Cert certificate_list1..224-1; // X509.3 证书链,在此,只有服务器端的证书。
} Certificate;
客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的 CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。
发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名” ----- 用于验证证书中提供的公钥的可用性。(签名算法+公钥+密文)
用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。
enum { rsa, diffie_hellman, fortezza_dms } KeyExchangeAlgorithm;
struct {
opaque rsa_modulus1..216-1;
opaque rsa_exponent1..216-1;
} ServerRSAParams;
其中:
rsa_modulus 服务器的临时的RSA密钥的模数。
rsa_exponent 服务器的临时的RSA密钥的公开指数。
struct {
opaque dh_p1..216-1;
opaque dh_g1..216-1;
opaque dh_Y s 1..216-1;
} ServerDHParams; /* 短期的DH参数 */
其中:
dh_p Diffie-Hellman操作中用到的质模数。
dh_g Diffie-Hellman操作中用到的发生器。
dh_Y 服务器的Diffie-Hellman公开值(gX mod p)。
struct {
opaque r_s [128];
} ServerFortezzaParams;
其中:
r_s 服务器为密钥交换算法而生成的随机数。
digitally-signed struct {
select(SignatureAlgorithm) {
case anonymous: struct { };
case rsa: opaque md5_hash[16];
opaque sha_hash[20];
case dsa: opaque sha_hash[20];
};
} Signature;
struct {
select (KeyExchangeAlgorithm) {
case diffie_hellman: ServerDHParams params;
Signature signed_params;
case rsa: ServerRSAPar
文档评论(0)