揭秘HTTPS握手过程:加密连接的完成需要几次握手?
随着互联网的发展,网络安全问题越来越受到人们的关注。
为了保证数据在传输过程中的安全性,HTTPS应运而生。
HTTPS是一种通过SSL/TLS协议进行加密传输的HTTP协议,它在数据传输前进行握手过程,以确保通信双方的身份验证和数据的加密传输。
那么,究竟HTTPS握手过程需要几次握手才能完成加密连接呢?下面我们将详细解析HTTPS握手过程。
一、HTTPS概述
HTTPS是一种安全的HTTP协议,它在HTTP的基础上,通过SSL/TLS协议对数据进行加密传输。
HTTPS采用公钥和私钥的方式进行身份验证和加密,确保了数据在传输过程中的安全性。
二、HTTPS握手过程
HTTPS握手过程是在客户端和服务器之间建立安全连接的关键步骤,主要包括以下几个步骤:
1. 客户端发起连接请求
客户端向服务器发送连接请求,请求中包含客户端支持的SSL/TLS协议版本、加密套件等信息。
2. 服务器回应
服务器收到连接请求后,根据请求中的信息选择双方共同支持的SSL/TLS协议版本和加密套件,并生成一个随机数作为预主密钥,同时返回服务器的证书。
3. 客户端验证服务器证书
客户端收到服务器返回的证书后,会验证证书的合法性,如验证证书是否由受信任的证书颁发机构颁发、证书是否过期等。
4. 客户端生成密钥信息
如果服务器证书验证通过,客户端会生成一个新的随机数,并与之前收到的预主密钥一起生成一个新的主密钥。
同时,客户端还会根据服务器的公钥信息生成一个密钥对,用于后续的数据加密传输。
5. 客户端发送握手完成信息
客户端将生成的密钥信息发送给服务器,并通知服务器握手完成。
6. 服务器完成握手
服务器收到客户端发送的密钥信息后,利用自己的私钥进行解密,验证无误后完成握手过程。
此时,双方已经建立了一个安全的加密通道。
三、握手次数
根据上述过程,我们可以得知HTTPS握手过程需要两次握手才能完成加密连接。
第一次握手是客户端向服务器发送连接请求,第二次握手是服务器验证客户端信息并发送证书,然后客户端验证证书并发送密钥信息完成握手过程。
需要注意的是,这两次握手是在网络层面上完成的,与应用程序层面的数据传输是分开的。
四、总结
HTTPS握手过程是建立安全连接的关键步骤,它通过公钥和私钥的方式进行身份验证和加密,确保了数据在传输过程中的安全性。
HTTPS握手过程需要两次握手才能完成加密连接,分别是客户端发起连接请求和服务器回应、验证及完成握手。
在这个过程中,双方通过交换证书和密钥信息,建立了一个安全的加密通道,保证了数据传输的安全性。
随着互联网的发展,HTTPS将越来越普及,人们在使用网络时,应该注意保护个人信息和密码安全,避免在网络传输过程中被窃取或篡改。
https和http的区别是什么
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。
它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。
它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。
HTTPS实际上应用了Netscape的安 全全套接字层(SSL)作为HTTP应用层的子层。
(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。
)SSL使 用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。
HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。
HTTPS和HTTP的区别:https协议需要到ca申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。http的连接很简单,是无状态的HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全HTTPS解决的问题:
1 . 信任主机的问题. 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书. 改证书只有用于对应的server 的时候,客户度才信任次主机. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue 还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server.
2 . 通讯过程中的数据的泄密和被窜改
1. 一般意义上的https, 就是 server 有一个证书.
a) 主要目的是保证server 就是他声称的server. 这个跟第一点一样.
b) 服务端和客户端之间的所有通讯,都是加密的.i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程. 加下来所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥. 当然窜改也就没有什么意义了.
2. 少许对客户端有要求的情况下,会要求客户端也必须有一个证书.
a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份. 应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份.
b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体.
HTTPS 一定是繁琐的.
a) 本来简单的http协议,一个get一个response. 由于https 要还密钥和确认加密算法的需要.单握手就需要6/7 个往返.i. 任何应用中,过多的round trip 肯定影响性能.
b) 接下来才是具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密.i. 尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片. 如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求. 加密后数据量的影响. 所以,才会出现那么多的安全认证提示
HTTPS请求证书时候的握手是SSL/ TLS 还是TCP的握手?
1. HTTPS是基于SSL安全连接的HTTP协议。
HTTPS通过SSL提供的数据加密、身份验证和消息完整性验证等安全机制,为Web访问提供了安全性保证,广泛应用于网上银行、电子商务等领域。
此图为HTTPS在网上银行中的应用。
某银行为了方便客户,提供了网上银行业务,客户可以通过访问银行的Web服务器进行帐户查询、转帐等。
通过在客户和银行的Web服务器之间建立SSL连接,可以保证客户的信息不被非法窃取。
2.只需要验证SSL服务器身份,不需要验证SSL客户端身份时,SSL的握手过程为:(1) SSL客户端通过Client Hello消息将它支持的SSL版本、加密算法、密钥交换算法、MAC算法等信息发送给SSL服务器。
(2) SSL服务器确定本次通信采用的SSL版本和加密套件,并通过Server Hello消息通知给SSL客户端。
如果SSL服务器允许SSL客户端在以后的通信中重用本次会话,则SSL服务器会为本次会话分配会话ID,并通过Server Hello消息发送给SSL客户端。
(3) SSL服务器将携带自己公钥信息的数字证书通过Certificate消息发送给SSL客户端。
(4) SSL服务器发送Server Hello Done消息,通知SSL客户端版本和加密套件协商结束,开始进行密钥交换。
(5) SSL客户端验证SSL服务器的证书合法后,利用证书中的公钥加密SSL客户端随机生成的premaster secret,并通过Client Key Exchange消息发送给SSL服务器。
(6) SSL客户端发送Change Cipher Spec消息,通知SSL服务器后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。
(7) SSL客户端计算已交互的握手消息(除Change Cipher Spec消息外所有已交互的消息)的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL服务器。
SSL服务器利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。
(8) 同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。
(9) SSL服务器计算已交互的握手消息的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL客户端。
SSL客户端利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。
SSL客户端接收到SSL服务器发送的Finished消息后,如果解密成功,则可以判断SSL服务器是数字证书的拥有者,即SSL服务器身份验证成功,因为只有拥有私钥的SSL服务器才能从Client Key Exchange消息中解密得到premaster secret,从而间接地实现了SSL客户端对SSL服务器的身份验证。
& 说明:l Change Cipher Spec消息属于SSL密码变化协议,其他握手过程交互的消息均属于SSL握手协议,统称为SSL握手消息。
l 计算Hash值,指的是利用Hash算法(MD5或SHA)将任意长度的数据转换为固定长度的数据。
https加密过程是怎样的,是在七层协议的哪层工作的
网络七层协议(OSI)是一个开放性的通信系统互连参考模型,从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层。
每层的作用分别如下: 7应用层 与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。
例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。
但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。
示例:TELNET,HTTP,FTP,NFS,SMTP等。
6表示层 这一层的主要功能是定义数据格式及加密。
例如,FTP允许你选择以二进制或ASCII格式传输。
如果选择二进制,那么发送方和接收方不改变文件的内容。
如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。
在接收方将标准的ASCII转换成接收方计算机的字符集。
示例:加密,ASCII等。
5会话层 它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。
示例:RPC,SQL等。
4传输层 这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。
示例:TCP,UDP,SPX。
3网络层 这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。
为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。
示例:IP,IPX等。
2数据链路层 它定义了在单个链路上如何传输数据。
这些协议与被讨论的各种介质有关。
示例:ATM,FDDI等。
1物理层 OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。
连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。
物理层常用多个规范完成对所有细节的定义。
示例:Rj45,802.3等。
【巨程网】

