创造HTTPS的是个神
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的是个神的更多相关文章
- noip模拟赛 伪神
题目背景 一切就绪 但愿,这样就好 自那之后的五年—— 作为封印持续增大的结果,在我体内积蓄了庞大的光精灵的力量 在幻灯结界里觉醒过来的我,和从封印解放出的德米奥格,就如同字面意思所述的,获得了等同于 ...
- 腾讯云数据库TDSQL-大咖论道 | 基础软件的过去、现在、未来
近十年来,中国基础软件发展势头迅猛,市场前景看高,越来越多的企业也正在进行基础软件升级.那中国基础软件行业目前在国际市场上有什么优势,面临哪些困境,以及未来基础软件行业会如何发展呢?腾讯云数据库邀请沙 ...
- django在pyhton2.7 和 python3.* 之间代码和睦相处的方法
“祥”龙第一掌: from __future__ import unicode_literals from django.utils.encoding import python_2_unicode_ ...
- Docker不完全使用指南
Docker官方文档:https://docs.docker.com/ 神马是Docker? Docker可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器. 开发者在笔记本上编译测试通过 ...
- Java语言概述-JavaSE
代码虐我千百遍,我视代码如初恋 初级学习思想: 先了解Java 下载中英文文档对照学习 多看,多学 多敲,狂练 多标注注释 总结—创造 https://baike.baidu.com/(Java百度百 ...
- [转帖] 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 ...
- 听大神说:https和http有何区别?(转)
在做雅虎的时候,发现用第三方工具截取不到客户端与服务端的通讯,以前重来没碰到过这种情况,仔细看了看,它的url请求时基于https的,gg了下发现原来https协议和http有着很大的区别.总的来说, ...
- SuperWebClient -一个基于CURL的.NET HTTP/HTTPS模拟神组件(1)
我们都知道,不管你是做爬虫也好,采集工具也罢,它们的HTTP/HTTPS模拟访问总是一个基础问题,我估计有很多人和我一样,虽然这样,那样的内置或是第三方类库用了很多,却总是会有一些不如意的问题存在,亦 ...
- SuperWebClient -一个基于CURL的.NET HTTP/HTTPS模拟神组件(2)
今天我们讨论SuperWebClient组件使用中的几个简单主题 1: UserAgent2: Cookies3: POST登录 1:UserAgent这个是客户端标识信息,此信息是用于鉴别正在访问W ...
随机推荐
- nodejs全局安装路径的位置
一般nodejs安装在默认的C盘,如果不知道安装在哪里,可以打开控制面板-系统和安全-系统-高级配置中找到 所谓全局安装: 是指安装在node中node_module的根目录里,可以在电脑的任何位置调 ...
- UltraEdit(UE)window破解方法
安装UltraEdit(一路下一步,无难点)成功后,打开软件弹出如下使用模式提示信息. 关掉UltraEdit软件,同时 断本机网络.重新打开UltraEdit软件: 点击[输入许可证密 ...
- 新浪云虚拟机ftp链接显示失败问题
新浪云虚拟机ftp链接显示失败问题 测试是在局域网遇到的 域名解析可以ping有字节回复 账号密码也没有错误,但是链接一直出现 连接失败 拒接连接等问题 解决办法: 其实是局域网内的问题,这 ...
- JS高级——函数的调用模式
函数调用模式一共有四种 <script> //1.函数模式 //this指向window全局对象 //2.方法模式 //this指向调用这个方法的对象 //3.构造函数模式 //this ...
- JS——indexOf replace search
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置 注释:indexOf() 方法对大小写敏感!如果要检索的字符串值没有出现,则该方法返回 -1. 语法:searchvalue, ...
- mysql幻读
开启a,b两个数据库连接,a.b都开启事务后,b插入了一条数据R并提交,验证对a的操作造成的影响 select select for update update R update R 后 select ...
- pptp服务故障
pptp服务故障记录 原文地址:http://www.cnblogs.com/caoguo/p/4994512.html 1.pptp部署是遇到开了防火墙端口不能拨号,拨号是提示错误如下: 但是关闭防 ...
- UpdateData
UpdateData 类似于C语言的scanf printf函数 管理控件与关联变量之间的数据更新. updatedata(true)把界面输入的数值更新到关联变量中,updatedata(false ...
- Linux下/var/log/btmp文件
今天查看了一下服务器,发现/var/log/btmp日志文件比较大占用磁盘空间,搜索一下,此文件是记录错误登录的日志,就是说有很多人试图使用密码字典登录ssh服务,此日志需要使用lastb程序打开. ...
- JS DOM节点(当前标签和同级、父级、子级..之间的关系)
1. 通过顶层document节点获取 1) document.getElementById(elementId) //根据id获得 2) document.getElementsByNa ...