[计算机网络] 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的新页面。

posted @ 2022-03-22 10:55  Cheung-10  阅读(432)  评论(0)    收藏  举报