详解HTTPS原理

http协议是目前非常普及的应用层传输协议,了解https之前要先知道http的缺点.

1.通信使用明文(不加密),内容可能被窃听.(抓包工具可以获取请求和响应内容)

2.不验证通讯方的身份,可能遭遇伪装.(任何人都能发送请求,不管对方是谁都会返回响应).


3.无法证明报文的完整性,可能会遭篡改.(没有办法确认发出的请求/响应和接收到的请求/响应前后一致)


这些问题不止会在http上出现,在其他未加密的协议中也会出现这类问题


HTTP+加密+认证+完整性保护 = HTTPS.

为了解决上述问题,需要再http上再加入加密处理和认证等机制.我们把添加了加密和认证机制的http称之为https(http secure)

HTTPS是身披SSL保护外衣的HTTP

HTTPS并非应用层的一种新协议,只是http通讯接口部分用SSL(secure socket layer)和TLS(transport layer security)协议代替.

通常http直接和tcp通信.当使用ssl时,则演变成先和ssl通信,再由ssl和tcp通讯.所谓https其实就是身披ssl保护外衣的http.

HTTPS采用混合机密机制

在对ssl了解之前先了解两种加密技术.

公开密钥加密(public-key cryptography)->加密算法是公开的,而密钥是保密的.加密和解密都会用到密钥.但反过来说只要持有密钥就能解密.

共享密钥加密(common key crypto system)->也被叫做对密钥加密.以共享密钥方式加密时必须将密钥也发给对方.在互联网上转发密钥时,如果通信被监听那么密钥就会落入攻击者之手,另外还得设法安全的保管接收到的密钥.

使用两把密钥的公开密钥加密

公开密钥加密使用一对非对称的密钥.一把私钥一把公钥.私钥不能让任何人知道,公钥任何人都能获得.也就是发送密文一方使用对方的公钥进行加密处理,对方收到被加密的信息后,再使用自己的的私钥进行解密.利用这种方法不需要发送用来解密的私钥,也不必担心密钥被盗走.

https采用共享密钥加密和公开密钥加密两者并用的混合加密机制.若密钥能够实现安全交换,那么有可能会考虑仅适用公开密钥加密来通信.但是公开密钥加密与共享密钥加密相比,其处理速度要慢.

所以应充分利用两者各有的有事,将多种方法组合起来用于通信.在交换密钥环节适用公开密钥加密方式,之后的建立通信交换报文阶段则适用共享加密方式.

证明公开密钥正确性的证书

公开密钥加密方式存在一些问题,无法证实公钥真伪.为了解决这个问题,可以使用由数字证书认证机构(CA,certificate authority)和其相关颁发的公钥证书.


可证明组织真实性的EV SSL证书

证书的一个作用是用来证明作为通信乙方的服务器是否规范,另外一个作用就是确认对方服务器背后运营的企业是否真实存在.拥有该特性的证书就是EV SSL证书(extended validation SSL certificate)

EV SSL证书是基于国际标准的认证指导方针颁发的证书.通过认证的web网站能够获得更高的认可度.

持有EV SSL证书的web网站浏览器地址栏处的背景是绿色的.点击后可以查看详情

用以确认客户端的客户端证书

HTTPS中还可以使用客户端证书.以客户端证书进行客户端认证,证明服务器正在通信的对方始终是预料之内的客户端,起作用跟服务器证书如出一辙.

想获取证书时,用户需要自行安装客户端证书,证书是付费购买的,且每张证书对应到每位用户也就意味着需支付和用户数对等的费用.另外要让不同的用户自行安装证书,这件事本身也是充满了挑战.

现状是,安全性极高的认证机构可颁发客户端证书但仅用于特殊用途的业务.比如银行的网银就采用客户端证书.客户端证书另一个问题只能证明客户端实际存在,而不能用来证明用户本人的真实.

由自认证机构颁发的证书成为自签名证书

如果使用openSSL这套开源程序,都可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书.但该服务器证书在互联网不可作为证书使用.

独立构建的认证机构叫做自认证机构颁发的证书为"自签名证书"

浏览器访问该服务器时,会显示"无法确认连接安全性"或"该网站的安全证书存在问题"等

之所以这样原因是它无法消除伪装的可能性.值得信赖的第三方机构介入认证,才能让已植入在浏览器内的认证机构颁布的公钥发挥作用,并证明服务器的真实性.

ps:中级认证机构的证书,某些浏览器会以正规的证书来对待,可有的浏览器会当做自签名证书.

HTTPS的安全通信机制

为了更好地理解HTTPS,我们观察一下HTTPS的通信步骤




1.客户端通过发送client hello报文开始SSL通信.报文中包含客户端支持的SSL指定版本,加密组件列表(所使用的加密算法 密钥长度等)

2.服务器可进行SSL通信时,会议Server Hello报文作文回应.报文中含SSL版本 加密组件.服务器的加密组件内容是从接受客户端加密组件内筛选出来的.

3.之后服务器发送certificate报文.报文中包好公开密钥证书.

4.服务器发送server hello done报文通知客户端.最初阶段握手协商部分结束.

5.SSL第一次握手结束后,客户端以client key exchange报文作为回应.报文包含通信加密中使用的随机密码串.该报文已用步骤3中的公钥加密;

6.客户端继续发送change cipher spec报文.该报文会提示想服务器,在此报文之后的通讯会采用pre-master secret密钥加密

7.客户端发送finished报文 该报文包含连接至今前部报文的整体校验值.这次握手协商是否成功,要以服务器是否能够正确解密该报文作文判定标准.

8.服务器同样发送change cipher spec报文

9.服务器同样发送finished报文

10.C&S finishe报文交换完毕之后,ssl连接就算建立完成.通信会受到SSL的保护.从此开始进行应用层的协议通信,即发送HTTP响应

11.应用层协议通信,即发送HTTP响应

12.最后客户端断开连接.断开连接时,发送close_notity报文.上图做了一些省略

在以上流程中,应用层发送数据时会附加一种叫做MAC(message authentication code)的报文摘要.MAC能够查知报文是佛遭到篡改.从而保护报文的完整性.

到此HTTP的问题基本都已经解决啦,那HTTPS就没有缺点吗

SSL最大的问题所在就是慢!!


SSL的慢分两种.一种指通信慢,另一种是指由于大量消耗CPU以及内存资源,导致处理速度变慢.

和使用http相比网络负载可能会变慢2到100倍.出去和TCP连接,发送HTTP请求&响应以外,还必须进行SSL通信,因此整体上处理通信量不可避免会增加.

另一点是SSL必须进行加密处理.服务器和客户端都要进行加密和解密的处理.比起HTTP会更多的消耗服务器和客户端的硬件资源,导致负载增强.

针对速度变慢这一问题,并没有根本性的解决方案,我们会使用SSL加速器(专用服务器)硬件来改善该问题.该硬件为SSL通信专用硬件,相对软件来讲,能够提高数倍SSL的计算速度.仅在SSL处理时发挥SSL加速器的功效,以分担负载.

为什么不一直使用HTTPS?

目前并非所有内容都进行加密处理,而是仅在那些需要信息隐藏时才会加密,以节约资源.除此之外购买证书的开销一室原因之一

ps:SSL证书参考下面的消息;

免费的目前有 2 个

国内的:免费SSL证书申请

国外的:StartSSL™ Certificates & Public Key Infrastructure

备注:其实,国内的这家的根证书,也是startssl签发的,实际上还是等于是startssl提供的免费证书。

便宜的有很多家,这里列举几个:

Namecheap:Cheap SSL Certificates from $7.95/yr • Namecheap.com

还是Namecheap:SSL Certificates. Buy Cheap SSL Certs from $4.99/yr

cheapssl:Cheap SSL Certificates. Buy or Renew Cheapest SSL at $4.80

再补充 2 个卖便宜 SSL 的:

Gogetssl:https://www.gogetssl.com/domain-validation/comodo-positive-ssl/

Starfieldtech:https://www.starfieldtech.com/

以上来自<图解HTTP>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容