文档章节

快来使用HTTPS吧

linuxprobe
 linuxprobe
发布于 2016/10/25 22:56
字数 1399
阅读 11
收藏 1

为什么使用HTTPS

HTTP 协议,本身是明文传输的,没有经过任何安全处理。那么这个时候就很容易在传输过程中被中间者窃听、篡改、冒充等风险。。

 

HTTP 协议,中间者可以窃听隐私,使用户的敏感数据暴露无遗;篡改网页,例如往页面插的广告内容,甚至进行流量劫持,比如有的时候你会发现域名没输错,结果却跑到了一个钓鱼网站上,因为被它劫持了。

为了解决这三大风险,HTTPS的价值就体现出来了。

  • · 内容加密,第三方无法窃听。
  • · 身份认证,一旦被篡改,通信双方会立刻发现。
  • · 数据完整性。防止内容冒充或者篡改。

什么是HTTPS

HTTPS,简单的理解HTTP的安全版,即HTTP下加入SSL层,由两部分组成:HTTP + SSL / TLS。

HTTPS原理剖析

快来使用HTTPS吧快来使用HTTPS吧

第一步,用户在浏览器里输入一个https网址,此时客户端发起HTTPS请求,通过TCP和服务器建立连接(443端口)。

第二步,服务器存放CA证书进行处理,注意的是采用HTTPS协议的服务器必须要有一套数字证书,这套证书其实就是一对公钥和私钥。

第三步,服务器向客户端返回证书。证书里面包含了很多信息:比如域名,申请证书的公司,公钥等。以下是一个淘宝网的CA证书。

快来使用HTTPS吧快来使用HTTPS吧
快来使用HTTPS吧快来使用HTTPS吧

第四步,客户端对证书进行解析。这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机数,然后用证书对该随机数进行加密。

第五步,向服务器发送证书加密后的随机数。

第六步,服务器用它的私钥进行解密,得到了客户端传过来的随机数。

第七步,服务器用客户端的随机数加密后的信息发送给客户端。

第八步,客户端用之前生成的私钥解密服务端传过来的信息。

以上就是整个HTTPS的交互过程,大家是不是对整个流程有了比较大致的了解了呢。

HTTPS的相关场景

真实业务场景是复杂的,这里,整理3个项目中遇到的比较复杂的应用场景。

  • 场景一,对HTTPS进行CDN加速,这种情况下,CA证书需要存放在哪里呢?
  1. 服务器(源站)提供证书给CDN厂商,包括公钥证书和私钥,CDN负责交互和内容缓存,CDN有缓存则直接响应,以HTTP或HTTPS的形式回源。这个方案,适用仅对防劫持、防篡改有需求,而愿意提供证书给CDN的源站加速。
  2. 服务器(源站)不提供证书,CDN存放公钥,服务器(源站)存放私钥。在CDN与前端浏览器进行TLS的认证和秘钥协商过程中,通过安全的信道把协商过程中的信息以HTTP或HTTPS的形式转发给源网站。此方案中,CDN不做缓存,仅以自有的加速网络,将用户的请求快速送到服务器(源站),降低公网延迟。这个方案,适用于对安全要求更高,不愿将私钥共享给CDN的源站加速。
  • 场景二,对HTTPS的域名通过CNAME绑定到另外一个HTTPS域名上

这个情况下,我们需要一个证书还是两个证书呢?

我们的方案是,两个证书。因为每个证书跟自己的域名进行绑定,即使它们都在同一个服务器上,也不能使用同一个证书。

  • 场景三,两台服务器的证书问题

因为安全问题,CA证书在一台服务器上,而服务部署在另外一台服务器上。这种情况就比较难办。

快来使用HTTPS吧快来使用HTTPS吧

此时,需要借助Nginx进行反向代理,回源到具体的服务器。

HTTPS设计上的借鉴

对于HTTPS设计上的方案,对于我们而言,有什么可以借鉴的地方么,答案是肯定的:有。一个非常典型的方案就是RSA双向认证。

RSA双向认证,顾名思义,就是用对方的公钥加密是为了保密,这个只有对方用私钥能解密。用自己的私钥加密是为了防抵赖,能用我的公钥解开,说明这是我发来的。例如,支付宝的支付接口就是非常典型的RSA双向认证的安全方案。此外,我们之前的教育资源、敏感验证码出于安全性考虑都借鉴了这个方案。

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

本文转载自:http://www.linuxprobe.com/https.html

共有 人打赏支持
linuxprobe
粉丝 19
博文 257
码字总数 45072
作品 0
朝阳
本周更新及精选项目,码云个人年终盘点新鲜出炉!

新增功能: 码云个人年终盘点新鲜出炉,快来看看你的2017年码力值有多少(点击查阅新闻) 支持给自己的项目、关注的项目、Star 的项目打标签分组功能。 优化功能: 绑定手机号的账户可以直接...

码云Gitee
01/01
1K
3
中科院开源协会镜像站 Android SDK镜像测试发布

科技网最大的镜像站,中科院开源协会镜像站项目正式启动。 目前先行发布Android SDK镜像。 支持IPV6,享受飞一般的速度。 在宿舍下载更可享受不计流量的快感。 使用方法 启动 Android SDK Ma...

五大三粗
2015/10/13
43
0
中科院开源协会镜像站 Android SDK镜像测试发布

科技网最大的镜像站,中科院开源协会镜像站项目正式启动。 目前先行发布Android SDK镜像。 支持IPV6,享受飞一般的速度。 在宿舍下载更可享受不计流量的快感。 使用方法 启动 Android SDK Ma...

五大三粗
2015/10/13
1K
0
iOS 端的弹出指示层--LemonBubble4iOS

LemonBubble 4 ObjC 简介:这是一个完全 Made in China 的炫酷弹出指示层,他能让你快速的自定义任何样式的弹出框。 先来看看我们的动画效果图吧 怎么样,想用吗?您可以使用 Cocoapods 快速...

1em0nsOft
2017/01/06
924
2
在 Visual Studio 上竟然也可以这样高效地使用码云

嘿嘿嘿~ 首先,告诉大家一个秘密…… 今天周五啦,明天我不上班! 在此,郑重的宣布! 继码云 ATOM 扩展 ATOM-GitOSC、 IntelliJ IDEA 插件、码云 Eclipse 插件上线之后,码云在众包上继续悬...

局长
2017/03/10
4.3K
16

没有更多内容

加载失败,请刷新页面

加载更多

arts-week10

Algorithm 905. Sort Array By Parity - LeetCode Review Who’s Afraid of the Big Bad Preloader? 一文读懂前端缓存 一个网络请求3个步骤:请求,处理,响应,而前端缓存主要在请求处响应这两步...

yysue
今天
4
0
00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
5
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
158
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部