门户网站整站源码,菏泽兼职网站建设,用ul做的网站为何浮动不上去,网站管理建设工作报告参考;HTTPS简介以及SSL协议详解 地址#xff1a;https://qingmu.blog.csdn.net/article/details/108209248?spm1001.2014.3001.5502 目录1.HTTPS简介2.SSL协议介绍2.1、SSL协议的功能2.2、SSL协议在协议栈的位置2.3、SSL协议组成2.3.1、纪录协议的功能2.3.2、SSL记录协议的示… 参考;HTTPS简介以及SSL协议详解 地址https://qingmu.blog.csdn.net/article/details/108209248?spm1001.2014.3001.5502 目录1.HTTPS简介2.SSL协议介绍2.1、SSL协议的功能2.2、SSL协议在协议栈的位置2.3、SSL协议组成2.3.1、纪录协议的功能2.3.2、SSL记录协议的示意图2.3.3、SSL协议封装过程2.3.4、SSL协议解封装过程2.3.5、SSL握手协议全流程握手详解Client helloServer helloServer CertificateClient Certificate RequstServer Hello doneClient CertificateClient Key EXchangeCertificate verifyChange Cipher SpecClient finished Message加密套件列表1.HTTPS简介
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer)是HTTP的安全版。
HTTPS默认使用TCP端口443(http默认端口号是80)也可以指定其他的TCP端口。
2.SSL协议介绍
HTTPS中S实际上是SSL(Secure Sockets Layer)协议。
SSL是Netscape公司发明的一种用于WEB的安全传输协议。随着时间的推移由于Netscape失去了市场份额它将SSL的维护工作移交给因特网工程任务IETF。第一个后Netscape版本被重新命名为安全传输层协议TLSTLS(Transport Layer Security :RFC 2246)是基于SSL上研发的但是与SSLv3.0有细微的差别。
因此SSL协议有时也称为TLS协议。目前常用的是TLSv1.0的协议
2.1、SSL协议的功能
1、保证传输数据的保密性 2、保证传输数据的完整性 rc4 3、实现通信双方的互相身份认证—非对称加密
2.2、SSL协议在协议栈的位置 2.3、SSL协议组成
SSL协议是一个分层的协议共有两层组成。
高层协议包括: SSL握手协议(SSL HandshakeProtocol)、 改变加密约定协议(Change Cipher Spec Protocol)、 报警协议(AlertProtocol) ChangeCipherSpce改变加密约定协议
·处于SSL协议的底层的是: .SSL记录层协议(SSL Record Protocol) 记录层协议实际上是一个简单的封装或者说是“打包”协议。记录可能是明文传送的也可能是被加密传送的
2.3.1、纪录协议的功能
1、保证消息的完整性 2、机密性
2.3.2、SSL记录协议的示意图 数据可能是加密的也可能是明文。在握手过程中除了最后一条finished的报文外其他报文都是明文传输的。
填充:只有在使用分组加密才会有填充和填充长度两个字段。
MAC(Message Authentication Code)消息验证码 主要目的是认证消息、检验数据是否被篡改。 目前常用的消息摘要算法有MD5(Message-Digest Algorithm 5)和SHA(Secure Hash Algorithm )。 SSL中的摘要算法是:HMAC即Keyed-Hash Message Authentication Code。 HMAC是在使用消息摘要函数例如MD5等的同时增加了一个“密钥”作为输入。 消息验证码也称为消息摘要是实现数据完整性的主要手段
2.3.3、SSL协议封装过程 2.3.4、SSL协议解封装过程 2.3.5、SSL握手协议
SSL握手协议是ssL协议中最重要同时也是最复杂的协议。
SSL握手协议主要负责如下工作: 算法协商 身份验证 确定密钥
SSL握手过程分为四种:
握手种类描述Full Handshake全流程握手C/S双方从无到有建立SSL连接;Resumn sessionHandshakeC/S双方曾经建立过连接但中途断了SsL会话信息还有保留只需要执行部分握手流程就可建立SSL连接;ServerRe-negotationHandshake已经建立了SsL连接但sever端为了某些原因(比如安全性)要求重新对密钥进行协商也只需要执行部分握手流程;Client Re-negotiationHandshake已经建立SSL连接但client端为了某些原因要求重新协商只需执行部分握手流程。
全流程握手详解 Client hello Client hello 客户端给服务器端发个hello的问候问候里包含有它使用的SSL版本号、加密套件列表压缩算法列表客户端随机数sessionid0
服务器收到客户端的问候后会从客户端提供的版本号中选出双方都支持的最高版本从加密套件列表选择一种支持也安全性强的加密套件从压缩算法列表选择压缩算法一般为空)。
Server hello Server hello: 服务器将上述选择的加密套件压缩算法NULL且计算出的一个session_id和服务器随机数发送给客户端
客户端收到Server hello的报文会将加密套件压缩算法NULLsession_id和服务器随机数缓存起来。接着继续握手过程
Server Certificate Server Certificate 服务端将自己的证书发送给客户端证明自己的身份。证书中包含服务器的身份信息以及服务器的公钥
客户端收到Certificate报文会验证该证书是否过期并将服务器的公钥缓存起来
Client Certificate Requst Client Certificate Requst:
如果是SSI的双向认证的话那么服务器端会向客户端发送client certrequest消息索要客户端的证书证书中包含有server端支持的证书类型和所信任的所有证书发行机构(CA(Certificate Authority))列表。
客户端收到clint Certifitate Rlequst报文将消息中的证书类型列表和可信任证书发行机构列表保存下来可在后面发送客户端证书时候拿来筛选证书用。
Server Hello done 服务器通知客户端这一步的握手消息发送完成。等待客户端确认。
Client Certificate 客户端从之前收到server端发的 certrequest消息中的支持的证书类型列表和信任的根CA(Certificate Authentcation)列表中选择满足条件的第一个证书发送给服务器。
服务端会缓存客户端的公钥
Client Key EXchange 若为RSA加密客户端则产生48位随机数作为pre-master预主密钥并用服务端公钥加密后发出去。
服务器端缓存预主密钥
Certificate verify Certificate verify这个消息中要包含一个签名签名里头内容是从Client hello 开始到目前为止所有握手消息不包括本消息的摘要然后客户端的私钥加密
由于之前的Client Certificate 消息中包含有客户端的公钥因此用公钥解密该消息验证客户端的真实性
Change Cipher Spec Change Cipher Spec]该消息只有一个值为1的字节。不属于握手协议和握手协议同一级别的改变加密约定协议。发送该消息的作用是为了告诉对方接下来的消息将采用新协商的加密套件和密钥进行通信。
在发送该消息的同时客户端会把之前的客户端随机数服务器端随机数、以及预主钥产生一个主密钥。并将主密钥进行密钥导出(服务器端的写MAC密钥、客户端写MAC密钥、服务器端的写密钥、客户端的写密钥)该过程只在本地进行不发送给对方。
Client finished Message Client finished Message:
这是客户端ssi协商成功结束的消息。也是第一个用协商好的密钥加密的消息。会把从client hello一直到现在的数据摘要用客户端密钥加密发送给服务器。确保握手过程的完整性和机密性。
加密套件列表
加密套件列表: 列表中包含了Client端支持的所有密钥套件。 一个密钥套件定义了一个密钥规格其中描述如下内容: 密钥交换算法(非对称加密算法) 是否出口 对称加密算法 支持的最高对称密钥位数 MAC (Message Authentication Code算法(或摘要算法)。
例sSl_RSA_WITH_R04_128_MD5 0O04]非对称加密算法或密钥交换算法为RSA采用高强度128位对称加密算法RCA摘要或MAC算法为MD5不支持出口/