加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 综合聚焦 > 创业热点 > 经验 > 正文

HTTPS科普扫盲帖

发布时间:2016-03-06 03:07:16 所属栏目:经验 来源:博客园
导读:HTTPS其实就是secure http的意思啦,也就是HTTP的安全升级版。稍微了解网络基础的同学都知道,HTTP是应用层协议,位于HTTP协议之下是传输协议TCP。TCP负责传输,HTTP则定义

强调两点:

  1. 可以颁发证书的CA有很多(国内外都有)。
  2. 只有少数CA被认为是权威、公正的,这些CA颁发的证书,浏览器才认为是信得过的。比如VeriSign。(CA自己伪造证书的事情也不是没发生过。。。)

证书颁发的细节这里先不展开,可以先简单理解为,网站向CA提交了申请,CA审核通过后,将证书颁发给网站,用户访问网站的时候,网站将证书给到用户。

至于证书的细节,同样在后面讲到。

 

问题二:数据传输仅单向安全

 

上面提到,通过私钥加密的数据,可以用公钥解密还原。那么,这是不是就意味着,网站传给用户的数据是不安全的?

答案是:是!!!(三个叹号表示强调的三次方)

看到这里,可能你心里会有这样想:用了HTTPS,数据还是裸奔,这么不靠谱,还不如直接用HTTP来的省事。

但是,为什么业界对网站HTTPS化的呼声越来越高呢?这明显跟我们的感性认识相违背啊。

因为:HTTPS虽然用到了公开密钥加密,但同时也结合了其他手段,如对称加密,来确保授权、加密传输的效率、安全性。

概括来说,整个简化的加密通信的流程就是:

  1. 小明访问XX,XX将自己的证书给到小明(其实是给到浏览器,小明不会有感知)
  2. 浏览器从证书中拿到XX的公钥A
  3. 浏览器生成一个只有自己自己的对称密钥B,用公钥A加密,并传给XX(其实是有协商的过程,这里为了便于理解先简化)
  4. XX通过私钥解密,拿到对称密钥B
  5. 浏览器、XX 之后的数据通信,都用密钥B进行加密

注意:对于每个访问XX的用户,生成的对称密钥B理论上来说都是不一样的。比如小明、小王、小光,可能生成的就是B1、B2、B3.

参考下图:(附上原图出处)

https数据加密 HTTPS加密 https证书申请 https和http有什么区别 https免费证书

证书可能存在哪些问题

了解了HTTPS加密通信的流程后,对于数据裸奔的疑虑应该基本打消了。然而,细心的观众可能又有疑问了:怎么样确保证书有合法有效的?

证书非法可能有两种情况:

  1. 证书是伪造的:压根不是CA颁发的
  2. 证书被篡改过:比如将XX网站的公钥给替换了

举个例子:

我们知道,这个世界上存在一种东西叫做代理,于是,上面小明登陆XX网站有可能是这样的,小明的登陆请求先到了代理服务器,代理服务器再将请求转发到的授权服务器。

小明 --> 邪恶的代理服务器 --> 登陆授权服务器

小明 <-- 邪恶的代理服务器 <-- 登陆授权服务器

然后,这个世界坏人太多了,某一天,代理服务器动了坏心思(也有可能是被入侵),将小明的请求拦截了。同时,返回了一个非法的证书。

小明 --> 邪恶的代理服务器 --x--> 登陆授权服务器

小明 <-- 邪恶的代理服务器 --x--> 登陆授权服务器

如果善良的小明相信了这个证书,那他就再次裸奔了。当然不能这样,那么,是通过什么机制来防止这种事情的放生的呢。

下面,我们先来看看”证书”有哪些内容,然后就可以大致猜到是如何进行预防的了。

证书简介

在正式介绍证书的格式前,先插播个小广告,科普下数字签名和摘要,然后再对证书进行非深入的介绍。

为什么呢?因为数字签名、摘要是证书防伪非常关键的武器。

数字签名与摘要

简单的来说,“摘要”就是对传输的内容,通过hash算法计算出一段固定长度的串(是不是联想到了文章摘要)。然后,在通过CA的私钥对这段摘要进行加密,加密后得到的结果就是“数字签名”。(这里提到CA的私钥,后面再进行介绍)

明文 --> hash运算 --> 摘要 --> 私钥加密 --> 数字签名

结合上面内容,我们知道,这段数字签名只有CA的公钥才能够解密。

接下来,我们再来看看神秘的“证书”究竟包含了什么内容,然后就大致猜到是如何对非法证书进行预防的了。

数字签名、摘要进一步了解可参考 这篇文章。

证书格式

先无耻的贴上一大段内容,证书格式来自这篇不错的文章《OpenSSL 与 SSL 数字证书概念贴》

内容非常多,这里我们需要关注的有几个点:

  1. 证书包含了颁发证书的机构的名字 -- CA
  2. 证书内容本身的数字签名(用CA私钥加密)
  3. 证书持有者的公钥
  4. 证书签名用到的hash算法

此外,有一点需要补充下,就是:

  1. CA本身有自己的证书,江湖人称“根证书”。这个“根证书”是用来证明CA的身份的,本质是一份普通的数字证书。
  2. 浏览器通常会内置大多数主流权威CA的根证书。

证书格式

1. 证书版本号(Version)版本号指明X.509证书的格式版本,现在的值可以为:    1) 0: v1    2) 1: v2    3) 2: v3也为将来的版本进行了预定义2. 证书序列号(Serial Number)序列号指定由CA分配给证书的唯一的"数字型标识符"。当证书被取消时,实际上是将此证书的序列号放入由CA签发的CRL中,这也是序列号唯一的原因。3. 签名算法标识符(Signature Algorithm)签名算法标识用来指定由CA签发证书时所使用的"签名算法"。算法标识符用来指定CA签发证书时所使用的:    1) 公开密钥算法    2) hash算法example: sha256WithRSAEncryption须向国际知名标准组织(如ISO)注册4. 签发机构名(Issuer)此域用来标识签发证书的CA的X.500 DN(DN-Distinguished Name)名字。包括:    1) 国家(C)    2) 省市(ST)    3) 地区(L)    4) 组织机构(O)    5) 单位部门(OU)    6) 通用名(CN)    7) 邮箱地址5. 有效期(Validity)指定证书的有效期,包括:    1) 证书开始生效的日期时间    2) 证书失效的日期和时间每次使用证书时,需要检查证书是否在有效期内。6. 证书用户名(Subject)指定证书持有者的X.500唯一名字。包括:    1) 国家(C)    2) 省市(ST)    3) 地区(L)    4) 组织机构(O)    5) 单位部门(OU)    6) 通用名(CN)    7) 邮箱地址7. 证书持有者公开密钥信息(Subject Public Key Info)证书持有者公开密钥信息域包含两个重要信息:    1) 证书持有者的公开密钥的值    2) 公开密钥使用的算法标识符。此标识符包含公开密钥算法和hash算法。8. 扩展项(extension)X.509 V3证书是在v2的基础上一标准形式或普通形式增加了扩展项,以使证书能够附带额外信息。标准扩展是指由X.509 V3版本定义的对V2版本增加的具有广泛应用前景的扩展项,任何人都可以向一些权威机构,如ISO,来注册一些其他扩展,如果这些扩展项应用广泛,也许以后会成为标准扩展项。9. 签发者唯一标识符(Issuer Unique Identifier)签发者唯一标识符在第2版加入证书定义中。此域用在当同一个X.500名字用于多个认证机构时,用一比特字符串来唯一标识签发者的X.500名字。可选。10. 证书持有者唯一标识符(Subject Unique Identifier)持有证书者唯一标识符在第2版的标准中加入X.509证书定义。此域用在当同一个X.500名字用于多个证书持有者时,用一比特字符串来唯一标识证书持有者的X.500名字。可选。11. 签名算法(Signature Algorithm)证书签发机构对证书上述内容的签名算法example: sha256WithRSAEncryption12. 签名值(Issuer's Signature)证书签发机构对证书上述内容的签名值

如何辨别非法证书

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读