HTTPS工作流程

RSA算法

RSA的密钥分成两个部分:

  • PublicKey

    • 加密数据
    • 验证签名
    • 不能解密
    • 任何人都可以获得
  • Private Key
    • 数据签名(摘要算法)
    • 解密
    • 加密(不用此功能)
    • 不公开

RSA算法的特点:

  • 公钥端到私钥端的通讯却是安全的

    • 因为只有私钥能解密
  • 无法解决公钥端信息可信的问题
    • 任何人都可以拿到公钥给私钥端发信息
  • 私钥端给公钥端回消息不安全
    • 私钥发的消息公钥可解密,任何人都可看到
    • 私钥回的消息可以签名,保证无法被篡改

适合场景:

  • 发消息的消息要求绝对安全
  • 回消息要求不被篡改,但是被别人看到也无所谓

生产应用时希望通讯双方的所有数据都是加密的,并且都双方都可以解密,这种时候使用对称加密,双方都配置好密钥就好了;如果非要使用RSA,那只利用RSA发消息加密的特点,那么有两种方式:

方式一:两对RSA密钥

  • 思路:两对RSA密钥,发消息时都用对方的公钥。

  • 准备:双方各生成一对公钥和私钥,并把公钥给对方。

  • 发消息:用对方的公钥把消息加密发给对方。

  • 收消息:用自己的私钥解密消息。

  • 回消息:类似发消息,用对方的公钥发送加密消息。

如果在Client-Server模型应用中使用这种方式步骤为:

  • 服务端开放自己的公钥

    • 客户端发送消息给服务端用服务端的公钥
  • 客户端生成自己公钥和私钥,并把自己的公钥发给服务端
    • 服务端回消息时候用客户端的私钥加密

这种方式是ssh免密登陆的实现,客户端接受服务端的公钥放到 ~/.ssh/known_hosts,客户端再把自己的公钥配置到服务端,这样就实现了双向加密通讯。

方式二:RSA+对称加密

  • 思路:公钥端发消息时候,对消息再进行一次对称加密并把密码发给私钥,后续对称加密通讯

  • 发消息:公钥端把数据对称加密,然后把加密结果和对称加密的密钥用公钥加密,一起发给私钥端

  • 收消息:私钥解密后拿到对称密钥和报文,再对报文解密得到明文

  • 回消息:回消息只对称加密数据然后签名,公钥端先验签再用公钥解密

方式二https协议使用方案,也是ssh协议非免密的实现方案。

HTTPS协议

http是应用层协议,在tcp协议之上。这两个协议传输的都是明文,tcp之上再加一层安全协议SSL(Security Socket Layer) ,基于这一层实现http得到的就是https。

SSL是安全套接字编程接口,后来又进化为TLS(Transport Layer Security)传输层安全,定位类似,都是给TCP协议加密的。不管SSL和TLS都是软件实现的协议,在TCP/IP 4层模型中,它们也是应用层的。

在上一章,我们知道https同时利用了rsa和对称加密方法,通讯流程为:

  • 步骤1:客户端请求服务端的证书

    • 这一步被拦截、篡改了也没问题,因为只是通讯前的准备工作
  • 步骤2:服务端给客户端发送证书

    • 客户端收到证书后验真,如果OK就有服务端的公钥了
    • 证书是公开的,被拦截了也没问题
    • 如果被篡改成假证书,并且客户端验证通过就不安全了
      • 客户端用假证书的公钥加密数据,然后发送加密数据也被拦截就破解了https
      • 证书必须由专业结构发放
        • 发放机构对证书负责
        • 如果使用假证书破解就可以找到假证书的主人
  • 步骤3:客户端生成对称密钥并用公钥发送给服务端

    • 客户端自己记录下来生成的密钥
  • 步骤4:服务端解析出对称密钥并存储

  • 步骤5:客户端使用对称密钥加密数据发送

  • 步骤6:服务端使用对称密钥解密数据,并把响应数据用对称密钥加密

rsa的主要作用:

  • 客户端与服务器之间约定对称密钥

对称加密的作用:

  • http报文安全传输

SSL证书包含的信息:

  • 证书的发布机构CA(Certificate Authoritie)
  • 证书的有效期
  • 公钥
  • 证书所有者
  • 签名

证书最主要的作用就是存储服务器的公钥,并且保证服务器的的公钥是安全有效的,整个https安全的核心也是基于证书发放机构绝对安全。如果客户端拿着一个假的证书用了一个假的rsa 公钥,并且加密了发送,那这个假的公钥所对应的私钥就可以解密数据了。证书的真假只有靠证书的发放结构去验证,选择一家靠谱的发布机构很重要。

使用

服务端

因为服务端要接受并解密数据,服务端要有rsa的公钥和私钥,对称加密的密钥是客户端动态生成的,所以我们生成一对密钥然后放到一个支持https的服务器上就完成了部署。

具体操作请参考 :

https://aotu.io/notes/2016/08/16/nginx-https/index.html

客户端

客户端要有接受服务端证书并验证证书的能力,但是如果我们的网络是内网部署就没法验证服务端发送过来的证书了。那可以预先把证书放到客户端,如果服务器发来的证书是我们信任的,那么就可以给它发对称密钥并通信。

具体操作请参考:

https://www.cnblogs.com/duanxz/p/5146340.html

参考

HTTPS系列干货(一):HTTPS 原理详解

RSA加密、解密、签名、验签的原理及方法

SSH协议(1)-工作原理及过程

HTTPS工作流程的更多相关文章

  1. [信息安全] 3.HTTPS工作流程

    [信息安全]系列博客:http://www.cnblogs.com/linianhui/category/985957.html 0. 简单回顾 在前面两篇博客中介绍了密码相关的一些基本工具,包括(对 ...

  2. HTTPS工作流程(入门)

    1.CA(为服务器做担保的第三方机构)将包含CA[公钥C]等信息的[证书C]发送给浏览器: 2.服务器将其[公钥S]和网站信息发送给CA: 3.CA用CA[私钥C]将这些信息加密得到了签名后的[服务器 ...

  3. 工作流程引挈 https://www.flowable.org/

    工作流程引挈 :   https://www.flowable.org/ 起源:JBPM,Activiti

  4. HTTPS协议工作流程

    被问到了,复习一下HTTPS的工作流程 提到https,不得不提SSL SSL 1.        安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全 ...

  5. SSL协议(HTTPS) 握手、工作流程详解(双向HTTPS流程)

    原文地址:http://www.cnblogs.com/jifeng/archive/2010/11/30/1891779.html SSL协议的工作流程: 服务器认证阶段:1)客户端向服务器发送一个 ...

  6. SSL协议握手工作流程详解(双向HTTPS流程)

    参考学习文档:http://www.cnblogs.com/jifeng/archive/2010/11/30/1891779.html SSL协议的工作流程: 服务器认证阶段: 1)客户端向服务器发 ...

  7. NSURLSession使用说明及后台工作流程分析

    原文摘自http://www.cocoachina.com/industry/20131106/7304.html NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConne ...

  8. ios NSURLSession(iOS7后,取代NSURLConnection)使用说明及后台工作流程分析

    NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.注意, ...

  9. python大数据工作流程

    本文作者:hhh5460 大数据分析,内存不够用怎么办? 当然,你可以升级你的电脑为超级电脑. 另外,你也可以采用硬盘操作. 本文示范了硬盘操作的一种可能的方式. 本文基于:win10(64) + p ...

随机推荐

  1. 会话(cookie的使用,路径和Session的工作原理,使用)

    1.状态管理----Cookie 1.1 为什么需要状态管理 HTTP协议是无状态的,不能保存每次提交的信息,即当服务器返回与请求相对应的应答之后,这次事务的所有信息就丢掉了. 如果用户发来一个新的请 ...

  2. VMware安装Ubutun之SSH为何安装不上之谜

    一把心酸泪,鼻涕泪两行.谁人解我苦中苦,原是SSH安装不上去. 多方找寻,想要寻求解答. 首先我想到一个办法,找到进程,并且狠狠的用RM把它移除掉. NO,这个方法最后竟然不行,文件删了,锁还是获取不 ...

  3. Contest 141

    2019-06-16 14:35:52 1089. Duplicate Zeros - Easy 问题描述: 问题求解: 很显然的可以使用O(n), O(n)的解法.主要问题在于如何在O(1)空间复杂 ...

  4. python之面向对象三大特性: 继承(单继承)

    什么是继承 专业角度: B 继承 A类, B就叫做A的子类,派生类, A叫做B的父类,基类,超类. B类以及B类的对象使用A类的所有的属性以及方法. 字面意思: 继承就是继承父母所有的资产 class ...

  5. python3读取excel

    说明 2007版以前的Excel(xls结尾的),需要使用xlrd读,xlwt写. 2007版以后的Excel(xlsx结尾的),需要使用openpyxl来读写. pypi的地址: https://p ...

  6. 干净直接安装+PS下载

    PS CS6 https://www.cr173.com/soft/247727.html 直接一键安装,很方便干净. 不要去华军软件下,广告浪费时间. 链接:https://pan.baidu.co ...

  7. C#算法实现获取树的高度

    我们知道,树类型作为数据结构中的重要一员,树的很多实现都是来自递归.本文想要实现的就是在桌面客户端项目开发中,经常用到的树结构(.Net平台下有个控件为TreeView).事实上,我们可能因业务需求自 ...

  8. Python命令行执行.py文件提示ModuleNotFoundError:No module named 'XXX'解决办法

    原因:在命令行执行.py文件找不到包是因为我们没有把项目路径保存,可以通过sys.path.append()保存项目路径,执行后就能成功. ############################## ...

  9. 牛客挑战赛38 (A - D)

    A - 多边形与圆 题目链接 题意 给出一个多边形的坐标和圆的半径, 多边形可以在圆内滚动, 问点 1 在成为转动中心到下一次成为转动中心的过程中经过的路程长度. 题解 枚举点 2 - n 成为转动中 ...

  10. [noip2016]愤怒的小鸟<状压dp+暴搜>

    题目链接:https://vijos.org/p/2008 现在回过头去看去年的考试题,发现都不是太难,至少每道题都有头绪了... 这道题的数据范围是18,这么小,直接暴力呗,跑个暴搜就完了,时间也就 ...