学习
实践
活动
专区
工具
TVP
写文章

通过CURL请求示例详解HTTPS协议

基于HTTPS通信是当前互联网最通用便捷的通信方式,简单理解来看可以视为HTTP协议 + SSL/TLS协议,通过一个curl的示例阐述一下HTTPS协议。

特性:

信息加密传输,防止窃听风险

具有校验机制,防止篡改风险

配备身份证书,防止冒充风险

版本变更

SSL1.0 1994年,未发布

SSL2.0 1995年,有严重漏洞

SSL3.0 1996年,大规模应用,有风险现在不建议

TLS1.0 1999年(别称SSL3.1)

TLS1.1 2006年(别称SSL3.2)

TLS1.2 2008年,2011年修订(别称SSL3.3)

原理

公钥放在数字证书,验证证书可信,即公钥可信,采用公钥加密,服务器收到后,私钥解密,考虑到加密计算量,公钥将对话密钥加密,而其他的信息则采用对话密钥进行对称加密,尽量提升性能。

客户端向服务端索要并验证公钥

双方生成“对话密钥”

双方采用对话密钥加密通信

curl分析HTTPS请求时间

HTTPs耗时 = TCP握手 + SSL握手, 因为涉及到一些加密,及多了几次握手交互,可以看到的时要多于平常时间的3-5倍,当然这个和机器性能相关。

curl分析HTTPS请求过程

curl –trace 命令 可以记录请求的详情,我们就用它来了解一下https整个过程,命令如下:

客户端请求ClientHello

客户端主要向服务器提供以下信息:

1. 支持的协议版本,比如TLS 1.0版。

2.一个客户端生成的随机数,稍后用于生成”对话密钥”。

3. 支持的加密方法,比如RSA公钥加密。

4. 支持的压缩方法。

curl第一步请求如下

服务端响应SeverHello

服务器的回应包含以下内容:

1. 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。

2.一个服务器生成的随机数,稍后用于生成”对话密钥”。

3. 确认使用的加密方法,比如RSA公钥加密。

4. 服务器证书。

还有一种形式是服务端会校验客户端的证书,比如金融类一般金融机构以前网银key即包含一张客户端证书

客户端回应

一个随机数。该随机数用服务器公钥加密,防止被窃听。

编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。

客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。

三个随机数,生成会话密钥。 此外,如果前一步,服务器要求客户端证书,客户端会在这一步发送证书及相关信息。

服务器的最后回应

编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。

服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

curl整个请求过程:

文章来源于网络,如有侵权请联系我们,将予以删除

资源分享

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171221A0ZW2X00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券