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. JS——正则

    正则的声明: 1.构造函数:var 变量名= new RegExp(/表达式/); 2.直接量:var 变量名= /表达式/; test()方法: 1.正则对象方法,检测测试字符串是否符合该规则,返回 ...

  3. C#鸡翁百鸡

    一个for static void Main(string[] args) { int x, y, z; ; x <= ; x++) { - * x) % == ) { y = ( - * x) ...

  4. Python 之re正则表达式

  5. 从 UI 交互角度说语音识别产品

    语言是人类进化的主要特征,而人工智能拥有了说话的能力也是科技进步的一个特征.在很多科幻的电影里面,我们可以看到人工智能的身影.在电影 her 里面见到的人工智能,真的让人叹为观止,他可以随意的和你聊天 ...

  6. Linux内核同步:per_cpu变量

    per cpu变量相关函数和宏 DEFINE_PER_CPU_SHARED_ALIGNED(type,name):静态分配per_cpu数组,数组名为name,结构类型为type DEFINE_PER ...

  7. P2746 [USACO5.3]校园网Network of Schools// POJ1236: Network of Schools

    P2746 [USACO5.3]校园网Network of Schools// POJ1236: Network of Schools 题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学 ...

  8. =、==、is、id(内容)

    = 赋值 == 比较值是否相等 is 比较.比较的是内存地址 id(内容) 测出内存地址

  9. LVM(Logical Volume Manager)逻辑卷管理

    本文实验部分,完全由本人亲自动手实践得来 文章中有部分的内容是我个人通过实验测试出来的,虽以目前本人的能力还没发现不通之处,但错误难免,所以若各位朋友发现什么错误,或有疑惑.更好的建议等,盼请各位能在 ...

  10. 6.range filter进行范围过虑

    主要知识点 掌握range filter的用法     range filter就是查找一个范围内的数据,相当于sql中的betwen语法,以下是几个示例:     1.为帖子数据增加浏览量的字段   ...