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. MVC系列学习(五)-传递数据 与 接收数据

    1.控制器向视图传递数据 a.使用ViewData b.使用ViewBag c.使用Model 方式二: d.使用TempData 2.为什么在控制器中设置了一些属性,在视图中可以接受 3.Actio ...

  2. [Android]异常8-android.view.WindowManager$BadTokenException

    背景:Service服务中使用WindowManager时,Android4.4使用正常,Android6.0使用应用崩溃停止运行,提示android.view.WindowManager$BadTo ...

  3. 怎样用Fiddler模拟网络超时

    转自:http://materliu.github.io/all/web/2014/04/28/fiddler-timeout.html   用fiddler模拟网络请求超时 用fiddler模拟网络 ...

  4. git 如何创建一个分支

    参考: https://jingyan.baidu.com/article/adc81513b95a20f723bf73bf.html 首先进入本地git仓库目录下,打开git bash环境 使用gi ...

  5. Django - 创建多对多及增加示例

    创建多对多: 方式一: 自定义关系表 备注:自定义表Host.Application,通过自定义表,将表Host和Application进行关联(通过外键方式工): 执行语句:python manag ...

  6. jquery spa

    1.hashchange监听 2.根据url加载不同页面 $.ajax({ url:"/xx/xx.html" type:"get", dataType:&qu ...

  7. Codeforces Round #468 Div. 2题解

    A. Friends Meeting time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  8. Maven中更改默认JDK版本

    只要在settings.xml文件中加上如下标签即可.(我这里是默认的1.7版本) <profiles> <profile> <id>jdk-1.7</id& ...

  9. 5 pandas模块,DataFrame类

              DataFrame       DataFrame是一个[表格型]的数据结构,可以看作是[由Series组成的字典](共用同一个索引).DataFrame由一定顺序排列的多列数据组 ...

  10. 【codeforces 514B】Han Solo and Lazer Gun

    [题目链接]:http://codeforces.com/contest/514/problem/B [题意] 每次攻击可以把经过自己的一条直线上的所有点都毁掉; 然后给你n个目标物的坐标 问你最少要 ...