HTTP 是一个明文传输的协议,很多网络监听工具都可以轻易窃取网络中传输的用户信息,如密码,信用卡, 直到后来发明HTTPS, 世界一下子安静了

Why HTTPS?

HTTPS可以保证用户提交的信息,其它人即使拿到,也没有用,因为他没有密码,不能解密,

Why the post info cannot be decrypt by hacker?

因为提交的信息是用Server给的Public Key加密的,只有用相对应的Private Key才可以解密,而只是Server才知道这个Private Key

Why the server response can be decrypt by hacker?

Server返回的信息虽然是加密的,但容易被窃取,因为只要访问 一个这个网站,网站就会告诉你public key, 大家都知道public key, 所以大家都可以解密Server返回的信息

How to ensure the server is the correct one I want to talk with?

其实想获取用户提交的信息,还有其它一些办法,比如说DNS劫持,把DNS映射到自己的一台Server, 自己做一个certificate, 显示一个的表单给用户,用户提交以后,自己当然是知道Private Key的,当然可以解密,创造HTTPS的神已经想到这点,所以不是任何certificate都能被浏览器信任的,只有从国际上几个受信的certificate 签发公司生成的certificate才会被浏览器认为可信任,那我把那个证书拿过来放到我自己的服务器上不就可以了吗?No, 因为你不知道这个证书里面的Public Key所对应的Private Key, 不知道private Key, 你就是无法解密用户提交的信息,白忙一场哦

Why the browser know the certificate is a valid or not?

浏览器收到证书后,会做几步,

1. 看证书里的域名和目前访问的域名是否对应, 所以你不可能申请到别人域名相关的证书,不然你装Google, 再加个域名劫持

2. 看证书有没有过期 (for money)

3. 看证书有没有被改动过,根据证书里的签发机构找到在浏览器中内置的这个机构对应的Public Key去对文件的签名(一组编码)解密,再去扫描文件,生成文件的hash编码,如果Hash编码和用解密后的编码一致,就认为文件没有被改动过, 这点就防止你去改文件里的域名信息和Public Key

If you're a compnay has lot internal system, and also want to use HTTPS, What's the solution?

内部系统当然不能去官方申请一个证书,上千个系统,上千个证书,再加个各种测试环境,每年得上交多少钱哦,解决方案简单,3步走

1. 你就像官方一样,自己生成一个根证书 (就是一个public Key)和Private Key, 把private Key 想办法保存好,如果是银行,可能得把生成根证书的机器和Private Key一起锁在保险库里

2. 把根证书添加在各个系统的信任库中,这样当调用其它系统的时候,Server传来一个证书,系统就会用这个public key去验证证书的有效性

3. 各个系统上站点上使用的证书可以由一个系统生成 (应该有开源的生成证书的系统) 生成的过程大概就是,生成 一个Public key A和对应的Private key A, 再使用根证书对应的Private Key root 去把证书文件的hash code 加密,最后打包成一个最终文件

创造HTTPS的是个神的更多相关文章

  1. noip模拟赛 伪神

    题目背景 一切就绪 但愿,这样就好 自那之后的五年—— 作为封印持续增大的结果,在我体内积蓄了庞大的光精灵的力量 在幻灯结界里觉醒过来的我,和从封印解放出的德米奥格,就如同字面意思所述的,获得了等同于 ...

  2. 腾讯云数据库TDSQL-大咖论道 | 基础软件的过去、现在、未来

    近十年来,中国基础软件发展势头迅猛,市场前景看高,越来越多的企业也正在进行基础软件升级.那中国基础软件行业目前在国际市场上有什么优势,面临哪些困境,以及未来基础软件行业会如何发展呢?腾讯云数据库邀请沙 ...

  3. django在pyhton2.7 和 python3.* 之间代码和睦相处的方法

    “祥”龙第一掌: from __future__ import unicode_literals from django.utils.encoding import python_2_unicode_ ...

  4. Docker不完全使用指南

    Docker官方文档:https://docs.docker.com/ 神马是Docker? Docker可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器. 开发者在笔记本上编译测试通过 ...

  5. Java语言概述-JavaSE

    代码虐我千百遍,我视代码如初恋 初级学习思想: 先了解Java 下载中英文文档对照学习 多看,多学 多敲,狂练 多标注注释 总结—创造 https://baike.baidu.com/(Java百度百 ...

  6. [转帖] select、poll、epoll之间的区别总结[整理] + 知乎大神解答 https://blog.csdn.net/qq546770908/article/details/53082870 不过图都裂了.

    select.poll.epoll之间的区别总结[整理] + 知乎大神解答 2016年11月08日 15:37:15 阅读数:2569 http://www.cnblogs.com/Anker/p/3 ...

  7. 听大神说:https和http有何区别?(转)

    在做雅虎的时候,发现用第三方工具截取不到客户端与服务端的通讯,以前重来没碰到过这种情况,仔细看了看,它的url请求时基于https的,gg了下发现原来https协议和http有着很大的区别.总的来说, ...

  8. SuperWebClient -一个基于CURL的.NET HTTP/HTTPS模拟神组件(1)

    我们都知道,不管你是做爬虫也好,采集工具也罢,它们的HTTP/HTTPS模拟访问总是一个基础问题,我估计有很多人和我一样,虽然这样,那样的内置或是第三方类库用了很多,却总是会有一些不如意的问题存在,亦 ...

  9. SuperWebClient -一个基于CURL的.NET HTTP/HTTPS模拟神组件(2)

    今天我们讨论SuperWebClient组件使用中的几个简单主题 1: UserAgent2: Cookies3: POST登录 1:UserAgent这个是客户端标识信息,此信息是用于鉴别正在访问W ...

随机推荐

  1. jQuery——属相操作

    属性获取:attr(属性名), 属性设置:attr(属性名,具体值) 移除属性:removeAttr(属性名) 特殊情况:prop(属性名).prop(属性名,具体值):表单中状态属性checked. ...

  2. 【转载】文件上传Expected MultipartHttpServletRequest: is a MultipartResolver错误解决

    引入包commons-fileupload-*.jar,版本号可以根据项目情况调整: 在spring mvc配置文件中增加配置,文件大小限制可根据项目情况调整: <!-- 上传文件拦截,设置最大 ...

  3. 图表实现基于SVG或Canvas

    Highcharts 基于SVG,方便自己定制,但图表类型有限. Echarts 基于Canvas,适用于数据量比较大的情况. D3.v3 基于SVG,方便自己定制:D3.v4支持Canvas+SVG ...

  4. php第十六节课

    分页 <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private $ ...

  5. 破解js中的this指向

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...

  6. [Luogu] P1233 木棍加工

    题目描述 一堆木头棍子共有n根,每根棍子的长度和宽度都是已知的.棍子可以被一台机器一个接一个地加工.机器处理一根棍子之前需要准备时间.准备时间是这样定义的: 第一根棍子的准备时间为1分钟: 如果刚处理 ...

  7. 3.filter原理(bitset机制与caching机制)

    主要知识点: 一次filter执行顺序 filter和query的特点     一.一次filter执行顺序     1.在倒排索引中查找搜索串,获取document list 以一下date数据来举 ...

  8. win10 Ubuntu子系统安装&odoo10社区版安装

    参考文档: http://www.cnblogs.com/odoouse/p/5995603.html https://www.jianshu.com/p/58090215bda8 一.win10 U ...

  9. 【Codeforces 349B】Color the Fence

    [链接] 我是链接,点我呀:) [题意] 让你组成一个只由1~9组成的数字 每个数字需要的paint数字给定. 让你组成一个最大的数字,且所有数字的paint的总和不超过v. [题解] 先求出a中的最 ...

  10. Java基础——基础数据类型与读入输出

    首先我们写完了HelloWorld就学会了java的一种输出 System.out.println() 用起来就像是被强化过的C++的puts函数 或者就是自带endl的cout函数,中间的" ...