网站制作需要什么软件有哪些,物流网站前端模板,深圳家居网站建设,wordpress文件结构http://www.cnblogs.com/zery/p/5164795.html 一 前言 在说HTTPS之前先说说什么是HTTP#xff0c;HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的#xff0c;也就是明文的#xff0c;因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐…http://www.cnblogs.com/zery/p/5164795.html 一 前言 在说HTTPS之前先说说什么是HTTPHTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的也就是明文的因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输于是网景公司设计了SSLSecure Sockets Layer协议用于对HTTP协议传输的数据进行加密从而就诞生了HTTPS。SSL目前的版本是3.0被IETFInternet Engineering Task Force定义在RFC 6101中之后IETF对SSL 3.0进行了升级于是出现了TLSTransport Layer Security 1.0定义在RFC 2246。实际上我们现在的HTTPS都是用的TLS协议但是由于SSL出现的时间比较早并且依旧被现在浏览器所支持因此SSL依然是HTTPS的代名词但无论是TLS还是SSL都是上个世纪的事情SSL最后一个版本是3.0今后TLS将会继承SSL优良血统继续为我们进行加密服务。目前TLS的版本是1.2定义在RFC 5246中暂时还没有被广泛的使用 () 概念可参考百科 http://baike.baidu.com/link?urlM8pBu1j_22f0PW6izvAOCTjhepyRcT320U9LDmjyzb586OYS_aBALxfqIGVca1V-8MJeSl3bTUEOThMuwpamPK 二 HTTPS 验证原理 Https在真正请求数据前先会与服务有几次握手验证以证明相互的身份以下图为例 2.1 验证流程 注文中所写的序号与图不对应但流程是对应的 1 客户端发起一个https的请求把自身支持的一系列Cipher Suite密钥算法套件简称Cipher发送给服务端 2 服务端接收到客户端所有的Cipher后与自身支持的对比如果不支持则连接断开反之则会从中选出一种加密算法和HASH算法 以证书的形式返回给客户端 证书中还包含了 公钥 颁证机构 网址 失效日期等等。 3 客户端收到服务端响应后会做以下几件事 3.1 验证证书的合法性 颁发证书的机构是否合法与是否过期证书中包含的网站地址是否与正在访问的地址一致等 证书验证通过后在浏览器的地址栏会加上一把小锁(每家浏览器验证通过后的提示不一样 不做讨论) 3.2 生成随机密码 如果证书验证通过或者用户接受了不授信的证书此时浏览器会生成一串随机数然后用证书中的公钥加密。 3.3 HASH握手信息 用最开始约定好的HASH方式把握手消息取HASH值 然后用 随机数加密 “握手消息握手消息HASH值(签名)” 并一起发送给服务端 在这里之所以要取握手消息的HASH值主要是把握手消息做一个签名用于验证握手消息在传输过程中没有被篡改过。 4 服务端拿到客户端传来的密文用自己的私钥来解密握手消息取出随机数密码再用随机数密码 解密 握手消息与HASH值并与传过来的HASH值做对比确认是否一致。 然后用随机密码加密一段握手消息(握手消息握手消息的HASH值 )给客户端 5 客户端用随机数解密并计算握手消息的HASH如果与服务端发来的HASH一致此时握手过程结束之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密 因为这串密钥只有客户端和服务端知道所以即使中间请求被拦截也是没法解密数据的以此保证了通信的安全 非对称加密算法RSADSA/DSS 在客户端与服务端相互验证的过程中用的是对称加密 对称加密算法AESRC43DES 客户端与服务端相互验证通过后以随机数作为密钥时就是对称加密HASH算法MD5SHA1SHA256 在确认握手消息没有被篡改时 2.2 客户端如何验证 证书的合法性 1. 验证证书是否在有效期内。 在服务端面返回的证书中会包含证书的有效期可以通过失效日期来验证 证书是否过期 2. 验证证书是否被吊销了。 被吊销后的证书是无效的。验证吊销有CRL(证书吊销列表)和OCSP(在线证书检查)两种方法。 证书被吊销后会被记录在CRL中CA会定期发布CRL。应用程序可以依靠CRL来检查证书是否被吊销了。 CRL有两个缺点一是有可能会很大下载很麻烦。针对这种情况有增量CRL这种方案。二是有滞后性就算证书被吊销了应用也只能等到发布最新的CRL后才能知道。 增量CRL也能解决一部分问题但没有彻底解决。OCSP是在线证书状态检查协议。应用按照标准发送一个请求对某张证书进行查询之后服务器返回证书状态。 OCSP可以认为是即时的实际实现中可能会有一定延迟所以没有CRL的缺点。 3. 验证证书是否是上级CA签发的。 windows中保留了所有受信任的根证书浏览器可以查看信任的根证书自然可以验证web服务器的证书 是不是由这些受信任根证书颁发的或者受信任根证书的二级证书机构颁发的根证书机构可能会受权给底下的中级证书机构然后由中级证书机构颁发中级证书 在验证证书的时候浏览器会调用系统的证书管理器接口对证书路径中的所有证书一级一级的进行验证只有路径中所有的证书都是受信的整个验证的结果才是受信 三 手机如何抓取HTTPS的请求数据 当站点由HTTP转成HTTPS后是更安全了但是有时候要看线上的请求数据解决问题时却麻烦了因为是HTTPS的请求你就算拦截到了那也是加密的数据没有任何意义。 那有方法解决吗 答案是肯定的 接下来就来个实例教程教大家如何查看HTTPS的请求数据 首先需要安装Fiddler 用于拦截请求和颁发https证书 3.1 Fiddler根证书导出 按图中操作把导出再将导出的的根证书FiddlerRoot.cer 的后辍名 改为crt FiddlerRoot.crt 因为手机没法直接安装 cer格式的证书 3.2 证书安装 在本机把证书移到本机IIS中的某个网站的物理目录中然后在手机浏览器中访问该证书的目录 如192.168.0.1028001/FiddlerRoot.crt 如图 此时手机会提示按装根证书其实安装一个不受信的根证书是非常危险的如果你安装了某些钓鱼网站或者有危害的根证书那只要是该根证书下的所有证书都会验证通过 那随便一个钓鱼网的网站只要安装了该根证书下的证书都不会有任何警告提示。 很可能让用户有财产损失。所以在安装根证书时手机系统会要求你输入锁屏密码以确保是本人操作。 安装过程如下 Fiddler的根证书名字都提示了是不受信的根证书 安装完成 3.3 通过Fiddler抓取手机的HTTPS请求 Fiddler默认侦听的端口是8888,把手机WiFI的Http 代理设为本机Fiddler的地址如下图 这样手机上所有的请求都会先通过FiddlerFiddler再转发到目标服务器 注意 在家中的路由器中有线与无线通常不在一个网段会导致Fiddler无法抓到手机的包需要手动设置路由可自行百度 代理也设好之后便可以开始抓到Https的请求内容了如图 Https的默认端口号是 “443”可以看出红框中的是未装根证书前的请求加了一把小锁而且请求记录都是灰色的 而安装证书后请求则一切正常请求内容也都可以正常看到。 3.4 为什么安装了Fiddler根证书可以看到Https请求内容 要解释这个问题就需要了解最开始的Https的验证原理了回顾一下先是客户端把自己支持的加密方式提交到服务端然后服务端 会返回一个证书 到这一步问题来了手机未什么要安装Fiddler的证书呢 第一 因为Fiddler在客户端(手机)发出Https请求时充当了服务器的角色需要返回一个证书给客户端 但是Fiddler的证书并不是CA机构颁发的客户端一验证就知道是假的连接肯定就断了那怎么办呢 那就想办法让客户端信任这个服务端于是就在客户端安装一个Fiddler的根证书。 所以只要是通过Fiddler的Https请求验证根证书时自然会通过因为Fiddler的根证书你已经受信了 第二 现在只是客户端(手机)和Fiddler这个伪服务端的Https验证通过了还没有到真正的服务端去取数据的此时Fiddler会以客户端的身份与真正的服务端再进行一次HTTPS的验证最后拿到数据后 又以服务端的身份与客户端(手机)通信。也就是说在一次请求中数据被两次加解密一次是手机到Fiddler一次是Fiddler到真正的服务端。 整个过程 手机----》Fiddler----》 服务器 Fiddler 即充当了服务端又充当了客户端才使得数据能够正常的交互这个过程中最重要的一环就是手机端安装的 根证书 四 总结 写了这么多其实也只是把Https的基本流程写清楚了一部分这其中每一个步骤深入下去都是一门学科而对于我们而言能清楚其大致运作流程做到心中有数据就算可以了 Https在目前的网络数据安全传输占据着重要地位目前可能也没有更优的方案来代替Https。另外一定要注意 不要随便安装不确定的的根证书以免带来不必要的损失。 写这篇文章时已经进入我的春节假期而我也已经踏上了 回家的火车大家有疑问可以在评论中回复如有错误之处还望大家能指出以免误导他人 提前祝大家新年快乐 如果您觉得本文让您有所收获不妨点下赞为我的付出给一点点回报 如果您觉得本人也有点意思不妨点个观注大家一起谈技术谈人生 以下为参考资料 http://www.guokr.com/post/114121/ https原理 http://www.guokr.com/post/116169/ SSL证书 http://www.cnblogs.com/svan/p/5090201.html https工作原理 http://blog.csdn.net/clh604/article/details/22179907 Https 原理 https://www.zhihu.com/question/37370216/answer/71956414 浏览器如何验证HTTPS证书的合法性 http://blog.csdn.net/wkk2620632/article/details/39433673 公钥证书cer,pfx http://www.07net01.com/zhishi/640504.html 数字证书资料cer和pfx的区别