[计算机网络] https: client hello过程、用户访问http强制跳转https
1.建立tls连接
当client和server已经建立http连接或尚未建立连接时,都可以通过发送client hello来启动tls连接流程。
tls连接的过程包括:验证server证书、交换秘钥参数。
建立连接的过程(即client hello过程)步骤如下:
----hello过程----
1)client 发送client hello消息。
消息内容包括client的tls版本以及支持的客户端随机数、密码学套件(秘钥交换方式、身份认证算法、对称加密算法、消息摘要算法)、压缩方式和扩展方式,还有sessionID。
若SessionID为0,则为全新的tls会话,否则就是希望恢复会话。
2)server发送server hello消息。
消息内容包括随机数、选择的密码学套件。确定双方均可使用的tls协议版本、密码学套件等。
----server身份验证过程----
3)server发送Cerrification,即可以验证自己身份信息的证书。client收到后进行验证。
----秘钥参数交换过程----
4)server发送server key exchange消息,在秘钥交换算法下交换协商参数。以DH算法为例:协商出DH秘钥,该秘钥作为PreMasterKey。
5)client发送client key exchange消息,在秘钥交换算法下交换协商参数。以DH算法为例:协商出DH秘钥,该秘钥作为PreMasterKey。
----(可选)client身份验证过程----
6)server发送certificate request,要求client出示自己的证书。
7)client发送certificate verify,即出示证书。
----协商加密策略(稍后会话的对称加密)----
8)client发送change ciphr spec消息,client生成masterKey,并在消息中通知server开始使用加密策略。
9)server发送change ciphr spec消息,server生成masterKey,并在消息中通知client开始使用加密策略。
10)server发送finished消息,即对握手消息(masterKey和随机数)计算hash值,发送给client以验证交换得到的秘钥。
2. 使用户跳转https
有时希望用户使用https,但用户使用http访问,此时需要引导用户跳转到https。
1)rewrite方法,Nginx中使用,即在代理服务器上将http请求重写到https上。
2)重定向,即当http请求来到时,将其结果页面重定向到https的页面上(用户浏览器将收到301或302码然后跳转)。
3)html跳转。baidu.com使用了这一策略,即返回一个很简短的html页面,其内容是刷新页面到https的新页面。
浙公网安备 33010602011771号