专栏首页网络通过CURL请求示例详解HTTPS协议

通过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整个请求过程:

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

资源分享

本文来自企鹅号 - 程序猿崛起媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 负载均衡原理的解析

    作者:源子姗 my.oschina.net/u/3341316/blog/877206 开头先理解一下所谓的“均衡” 不能狭义地理解为分配给所有实际服务器一样多...

    企鹅号小编
  • 关于服务器的运行寿命 你应该知道这些事

    服务器是一种全年365天不间断开机运行的设备,且其配置一般都比较高的,但即使配置再高,它也只是一种电子设备,所以也是有使用寿命的。为了延长服务器的使用寿命,很多...

    企鹅号小编
  • 中国香港服务器与大陆服务器有什么区别

    随着国家对国内互联网环境的整治,国内的网络环境也变得越来越安全、干净。同时也给很多企业和站长建站时提出了更多的要求,除了内容上限制的更多,备案也成为了业内褒贬不...

    企鹅号小编
  • https 加密那点事

    这篇文章之前有写过,不过那篇文章在排版上很差,而且有些小许的错误。今天,我重新修改了那篇文章。算是那篇文章的修订版。

    louiezhou001
  • 【漫画】https 加密那点事

    在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端。之后服务器给客户端发送真实数据的时候,会用这把密钥对数据进行加密,客户端收到加密数据之后...

    帅地
  • 从运营商小广告到HTTPS

    相信很多人都试过这样的经历,浏览一个正常的网站时,右下突然角弹出一堆小广告,而且这些广告的内容和你浏览的网站格格不入: 前几天还有某微博用户爆料访问gith...

    IMWeb前端团队
  • 如何部署 NTP 服务器

    NTP 全称为 Network Time Protocol ,中文翻译为网络时间协议,1985年就已经被提出,旨在缩短互联网上所有计算机设备与 UTC 的时间差...

    Mr.Crypto
  • 为公益伸出援手,自建 NTP 服务器池

    在本教程中,讲述如何设置了自己的时间服务器,并使其成为NTP池项目的成员,为社区服务,现在国内NTP服务器数量还是不够乐观,还是那句话,如果你有位于国内的、长期...

    吴凌云
  • 想上传文件?就用Fine uploader吧!

    老大:新来的,我们现在有个需求就是由于版本更新修改资源文件、配置文件等等,需要可以通过网页实现上传文件,然后分发到一些指定服务器的某个目录下。

    audy
  • 利用Python实现卷积神经网络的可视化

    源 | 全球人工智能 文 | 小象 摘要: 本文简单说明了CNN模型可视化的重要性,以及介绍了一些可视化CNN网络模型的方法,希望对读者有所帮助,使其能够...

    昱良

扫码关注云+社区

领取腾讯云代金券