HTTPS科普扫盲帖
|
简单的来说,“摘要”就是对传输的内容,通过hash算法计算出一段固定长度的串(是不是联想到了文章摘要)。然后,在通过CA的私钥对这段摘要进行加密,加密后得到的结果就是“数字签名”。(这里提到CA的私钥,后面再进行介绍)
结合上面内容,我们知道,这段数字签名只有CA的公钥才能够解密。 接下来,我们再来看看神秘的“证书”究竟包含了什么内容,然后就大致猜到是如何对非法证书进行预防的了。 数字签名、摘要进一步了解可参考 这篇文章。 证书格式 先无耻的贴上一大段内容,证书格式来自这篇不错的文章《OpenSSL 与 SSL 数字证书概念贴》 内容非常多,这里我们需要关注的有几个点:
此外,有一点需要补充下,就是:
证书格式 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)证书签发机构对证书上述内容的签名值 如何辨别非法证书 上面提到,XX证书包含了如下内容:
浏览器内置的CA的根证书包含了如下关键内容:
好了,接下来针对之前提到的两种非法证书的场景,讲解下怎么识别 完全伪造的证书 这种情况比较简单,对证书进行检查:
篡改过的证书 假设代理通过某种途径,拿到XX的证书,然后将证书的公钥偷偷修改成自己的,然后喜滋滋的认为用户要上钩了。然而太单纯了:
HTTPS握手流程 上面啰啰嗦嗦讲了一大通,HTTPS如何确保数据加密传输的安全的机制基本都覆盖到了,太过技术细节的就直接跳过了。 最后还有最后两个问题:
上面两个问题,其实就是HTTPS握手阶段要干的事情。HTTPS的数据传输流程整体上跟HTTP是类似的,同样包含两个阶段:握手、数据传输。
阮老师的文章写的非常不错,通俗易懂,感兴趣的同学可以看下。 附:《SSL/TLS协议运行机制的概述》:http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html 写在后面 科普性文章,部分内容不够严谨,如有错漏请指出 :) 注:相关网站建设技巧阅读请移步到建站教程频道。 (编辑:PHP编程网 - 湛江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


