概念

  • SSH(Secure Shell)

    • 一种安全通信协议
    • 为shell提供加密通信服务
    • 使用了非对称加密和对称加密
      • 对称加密(Symmetric-Key Encryption):只用一个密钥来进行加密和解密
      • 非对称加密(Asymmetric-Key Encryption):用一个密钥来进行加密(公钥),用另一个密钥来解密(私钥)
    • 用于远程登录会话和其他网络服务
    • SSH=SSL+用户登录功能等应用层协议
    • 只有SSH客户端,和SSH服务器端之间的通信才能使用SSH协议,其他软件服务无法使用
    • 传统网络通信服务(FTP、Telnet)采用明文传输很不安全
    • 位于传输层和应用层
    • 过程
      • A、B之间建立TCP连接
      • B生成一对公私密钥
      • B把公钥发送给A
      • A生成一个用于加密数据的密钥K
      • A把K用公钥加密发给B,B解密(非对称加密)
      • A、B之间的通信数据都用K进行加密和解密(对称加密)
    • 中间人攻击
      • 黑客H埋伏在A、B之间的某个路由器上
      • 假冒B生成一对公私密钥,把密钥发送给A
      • H假冒B与A进行通信
      • SSH通过判断公钥的fingerprint(如本机MAC地址)是否可信来防止
    • 公钥登录(免密码登录)
      • 客户端将自己的公钥储存在远程服务器上
      • 客户端登录时,服务器发送一个经过公钥加密的随机数据给客户端
      • 客户端用私钥解密信息,并发还给服务器
      • 服务器验证正确后,即确认客户端是可信任的,从而建立起一条安全的信息通道,允许客户端不用输入密码直接登录 Shell
  • SSL(Secure Socket Layer 安全套接字层)
    • 一种安全通信协议
    • 位于传输层和应用层之间(比SSH范围小)
    • 为互联网上的所有客户端与服务器连接提供加密通信服务(比SSH范围广)
    • 常用的加密算法是RSA
    • 基本思想是先用公钥加密法,得到对话密钥,再用对称加密通信
    • 公钥加密法(非对称加密)
      • 客户端先向服务器端索要公钥,然后用公钥加密信息
      • 服务器收到密文后,用自己的私钥解密
    • 传统非对称加密的问题
      • 如何保证公钥不被篡改

        • 将公钥放在数字证书中
      • 如何减少公钥加密的计算量
        • 每次对话(session),客户端和服务端都生成一个对话密钥(session key)
        • 服务器公钥只用于加密对话密钥
    • 数字签名(Digital Signature)
      • 指出一个文件的所有者或创作者
      • 用Hash函数生成信件摘要,再使用私钥对摘要加密,生成数字签名
      • 公钥认证:证实一个公钥属于某个特定实体
    • 数字证书(Digital Certification)
      • 用于证实一个实体的真实身份
      • 将一个将实体身份标识信息(如IP,数字签名等)和实体公钥绑定起来
      • CA(Certification Authority 数字证书认证机构)
      • CA用自己的私钥,对实体的公钥和相关信息进行加密,生成数字证书
      • 收到实体信息的人,用CA的公钥解开数字证书,拿到实体的公钥
    • 使用过程  
      • 服务端用Hash函数生成信件摘要,再使用私钥对摘要加密,生成数字签名
      • 服务端将数字签名和数字证书一起附在信件中发给客户端
      • 客户端收到信件后,取下数字签名,用公钥解密得到摘要(公钥认证)
      • 客户端对信件本身使用Hash函数,将得到的结果与上一步一样(未篡改)
      • 客户端用CA的公钥解开证书,拿到服务端的公钥(未冒充)
    • 通信过程
      • 客户端向服务端索要并验证公钥
      • 双方协商生成对话密钥
        • 客户端发出请求:一个随机数
        • 服务端回应:一个随机数;服务器证书
        • 客户端回应:一个随机数(用服务端公钥加密);握手结束通知
        • 服务端回应:用三个随机数生成session key;握手结束通知
      • 双方采用对话密钥进行加密通信
  • RSA
    • 一种非对称加密算法
    • 原理:对两个大质数乘积进行分解十分困难
  • HTTPS(Hypertext Transfer Protocol Secure)
    • SSL+HTTP
    • HTTP通信的风险
      • 窃听:第三方可以获知通信内容
      • 篡改:第三方可以修改通信内容
      • 冒充:第三方可以冒充他人身份参与通信
    • SSL协议
      • 所有信息都是加密传播,第三方无法窃听
      • 提供数字签名,一旦被篡改,通信双方会立刻发现
      • 配备数字证书,防止身份被冒充
    • 为网站申请数字证书
      • 为服务器生成一对公私密钥
      • 把你网站的信息连同你的公钥一起发送给某个权威的CA
      • CA通过某种方式认证申请人是否是网站的所有人(比如让你在网站的指定路径上传他指定的特殊文字序列)
      • 验证通过得到证书

参考

SSH和SSL的区别—基于原理和协议

http://news.west.cn/52031.html

SSH、SSL与HTTPS

https://blog.csdn.net/m0_37402140/article/details/78568583

数字签名是什么?

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

Linux ssh命令详解

https://www.cnblogs.com/ftl1012/p/ssh.html

SSL和SSH有什么区别(写得有点乱)

https://blog.csdn.net/box_kun/article/details/79209031

OpenSSH下载

https://www.mls-software.com/opensshd.html

Linux使用ssh公钥实现免密码登录另外一台Linux

http://php-note.com/article/1464.html

[Web] 网络安全(SSH SSL HTTPS)的更多相关文章

  1. 开源web终端ssh解决方案-gateone简介

    好久都没来写博客,最近忙啥去了呢? 一是忙于saltstack的二次开发,二是云计算的学习研究中,所以就一直没写东西,今天给大家介绍个工具. 1. 首先来说一下为什么要 web ssh? 许多人不是说 ...

  2. gateone安装(web版本ssh)

    前言: 好久都没来写博客,最近忙啥去了呢? 一是忙于saltstack的二次开发,二是云计算的学习研究中,所以就一直没写东西,今天给大家介绍个工具. 好了,开始正文! 1.首先来说一下为什么要web ...

  3. proxy,https,git,tortoise git,ssh-agent,ssh-add,ssh,ssl,rsync

    看具体应用了,一般的文件复制使用scp,增量同步使用rsync.rsync的认证可以使用ssh,还可以是rsync自己的密码文件. ssh-keygen -l 察看 fineprint 5.1 通过p ...

  4. 网络数据传输安全及SSH与HTTPS工作原理

    本节内容 网络数据传输安全概述 数据加密算法分类 SSH工作原理 HTTPS工作原理 参考资料 个人一直在努力推动git在公司内部的普及和使用,前些日子在公司内部做了一次分享课,给大家介绍了下项目发布 ...

  5. web基础系列(五)---https是如何实现安全通信的

    https是如何实现安全通信的 如果有不正确的地方,还望指出! web基础系列目录 总结几种常见web攻击手段极其防御方式 总结几种常见的安全算法 回顾 总结几个概念(具体描述可以看上一篇文章) 数字 ...

  6. SSH SSL TELNET的比较(转)

    转载链接  https://blog.csdn.net/baidu_39486224/article/details/81295701 SSL(Secure Sockets Layer (SSL) a ...

  7. Web API应用支持HTTPS的经验总结

    在我前面介绍的WebAPI文章里面,介绍了WebAPI的架构设计方面的内容,其中提出了现在流行的WebAPI优先的路线,这种也是我们开发多应用(APP.微信.微网站.商城.以及Winform等方面的整 ...

  8. Java调用使用SSL/HTTPS协议来传输的axis webservice服务

    使用SSL/HTTPS协议来传输 Web服务也可以使用SSL作为传输协议.虽然JAX-RPC并没有强制规定是否使用SSL协议,但在tomcat 下使用HTTPS协议. 1.使用JDK自带的工具创建密匙 ...

  9. java ssl https 连接详解 生成证书 tomcat keystone

    java ssl https 连接详解 生成证书 我们先来了解一下什么理HTTPS 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over ...

随机推荐

  1. 使用 Elastic 技术栈构建 Kubernetes全栈监控

    以下我们描述如何使用 Elastic 技术栈来为 Kubernetes 构建监控环境.可观测性的目标是为生产环境提供运维工具来检测服务不可用的情况(比如服务宕机.错误或者响应变慢等),并且保留一些可以 ...

  2. 用优先队列构造Huffman Tree及判断是否为最优编码的应用

    前言 我们知道,要构造Huffman Tree,每次都要从堆中弹出最小的两个权重的节点,然后把这两个权重的值相加存放到新的节点中,同时让这两个节点分别成为新节点的左右儿子,再把新节点插入到堆中.假设节 ...

  3. day-01-初识Python与条件判断

    cpu 内存 硬盘 操作系统 cpu:计算机的运算和计算中心,相当于人类大脑.飞机 ​ 内存:暂时存储数据,临时加载数据应用程序,4G,8G,16G,32G ​ 速度快,高铁,断电即消失.造价很高 ​ ...

  4. 一文彻底掌握Apache Hudi的主键和分区配置

    1. 介绍 Hudi中的每个记录都由HoodieKey唯一标识,HoodieKey由记录键和记录所属的分区路径组成.基于此设计Hudi可以将更新和删除快速应用于指定记录.Hudi使用分区路径字段对数据 ...

  5. OO_Unit3总结

    OO_Unit3总结 一.JML情况 理论基础 JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言,为严格的程序设计提供了一套行之有效的方法.通过J ...

  6. SpringBoot 使用逆向工程 构建Mapper.xml Dao层(持久层) 实体类

    逆向工程 注: 有数据库表即可 第一步为创建数据库表 (可选)使用PowerDesigner设计数据库表,物理模型构建 添加pom.xml 逆向工程生成代码插件 <!--plugin 逆向工程生 ...

  7. Oracle-buffer cache过小导致SQL执行时间长

    一.问题:客户反馈在生产库和测试库执行相同SQL,测试库执行比生产库慢一倍 问题摆在这里,需要进行分析? 啥??? 版本11.2.0.4,都是单实例,主机系统硬件配置差不多. 二.对比SQL的执行效率 ...

  8. Day11_51_Collections工具类之sort方法和list集合的遍历方式

    Collections工具类之sort方法 * 使用Collections工具类对List集合进行排序 Collections.sort(List集合) * Collections.sort()方法只 ...

  9. Socket 多任务(多进程/线程、I/O多路复用、事件驱动开发框架)

    0. 概述 1. 循环版实现多连接 2. threading.Thread 多线程 3. SockerServer 实现多任务 3.1 ForkingMixIn - 多进程(限 linux) 3.2 ...

  10. Java设计模式(一):设计模式概述、UML图、设计原则

    1 设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1977年美国著名建筑大师.加利福尼亚大学伯克利分校环境结构 ...