深入理解HTTPS工作原理( 三 )

  • CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;
  • 如信息审核通过,CA会向申请者签发认证文件-证书 。证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名 。其中签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA的私钥对信息摘要进行加密,密文即签名;
  • 客户端 Client 向服务器 Server 发出请求时,Server 返回证书文件;
  • 客户端 Client 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即服务器的公开密钥是值得信赖的 。
  • 客户端还会验证证书相关的域名信息、有效时间等信息; 客户端会内置信任CA的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA的证书,证书也会被判定非法 。
  • 四、 HTTPS工作流程
    深入理解HTTPS工作原理

    文章插图
     
    1.Client发起一个HTTPS(比如https://juejin.im/user/5a9a9cdcf265da238b7d771c)的请求,根据RFC2818的规定,Client知道需要连接Server的443(默认)端口 。
    2.Server把事先配置好的公钥证书(public key certificate)返回给客户端 。
    3.Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书) 。如果验证通过则继续,不通过则显示警告信息 。
    4.Client使用伪随机数生成器生成加密所使用的对称密钥,然后用证书的公钥加密这个对称密钥,发给Server 。
    5.Server使用自己的私钥(private key)解密这个消息,得到对称密钥 。至此,Client和Server双方都持有了相同的对称密钥 。
    6.Server使用对称密钥加密“明文内容A”,发送给Client 。
    7.Client使用对称密钥解密响应的密文,得到“明文内容A” 。
    8.Client再次发起HTTPS的请求,使用对称密钥加密请求的“明文内容B”,然后Server使用对称密钥解密密文,得到“明文内容B” 。
    五、HTTP 与 HTTPS 的区别
    • HTTP 是明文传输协议,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全 。

    深入理解HTTPS工作原理

    文章插图
     
    关于安全性,用最简单的比喻形容两者的关系就是卡车运货,HTTP下的运货车是敞篷的,货物都是暴露的 。而https则是封闭集装箱车,安全性自然提升不少 。
    • HTTPS比HTTP更加安全,对搜索引擎更友好,利于seo,谷歌、百度优先索引HTTPS网页;
    • HTTPS需要用到SSL证书,而HTTP不用;
    • HTTPS标准端口443,HTTP标准端口80;
    • HTTPS基于传输层,HTTP基于应用层;
    • HTTPS在浏览器显示绿色安全锁,HTTP没有显示;
    六、为何不所有的网站都使用HTTPS既然HTTPS那么安全可靠,那为何不所有的Web网站都使用HTTPS?
    首先,很多人还是会觉得HTTPS实施有门槛,这个门槛在于需要权威CA颁发的SSL证书 。从证书的选择、购买到部署,传统的模式下都会比较耗时耗力 。
    其次,HTTPS普遍认为性能消耗要大于HTTP,因为与纯文本通信相比,加密通信会消耗更多的CPU及内存资源 。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定也会随之减少 。但事实并非如此,用户可以通过性能优化、把证书部署在SLB或CDN,来解决此问题 。举个实际的例子,“双十一”期间,全站HTTPS的淘宝、天猫依然保证了网站和移动端的访问、浏览、交易等操作的顺畅、平滑 。通过测试发现,经过优化后的许多页面性能与HTTP持平甚至还有小幅提升,因此HTTPS经过优化之后其实并不慢 。
    除此之外,想要节约购买证书的开销也是原因之一 。要进行HTTPS通信,证书是必不可少的 。而使用的证书必须向认证机构(CA)购买 。
     
    备注:
    这篇文章摘抄来自网络 。我打算总结一些列架构师需要的优秀文章,由于自己写会花太多时间,我决定做一个搬运工,为大家筛选优秀的文章,最后我会做成索引方便大家查找 。


    推荐阅读