异曲同工的SSH和HTTPS

2024-04-21 16:48
文章标签 https ssh 异曲同工

本文主要是介绍异曲同工的SSH和HTTPS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

异曲同工的SSH和HTTPS

一、初识 SSH

SSH是一种协议标准,其目的是实现安全远程登录以及其它安全网络服务主要用于计算机之间的加密登录与数据传输。目前市场用的最多的就是开源Openssh这个库;默认端口为22。


二、SSH 原理

了解SSH工作原理之前,我们先来了解下常用加密算法的常识:

  • 对称加密算法

    对称加密算法就是加密和解密采用同一把秘钥,常见算法有AES、DES等;

    在这里插入图片描述

    优缺点:

    • 算法公开、计算量小、加密速度快、加密效率高;
    • 双方用相同的秘钥,安全性等不到保证;
    • 如果秘钥数量多的时候,管理秘钥是一种负担;

  • 非对称加密算法

    非对称加密一般会有两把秘钥,一把私钥和一把公钥;一般会自己保留私钥,其他会将自己传输的信息使用公钥加密后,传输过来,然后再用私钥进行解密;

    引用知乎上面的一个案例就是:小明使用银行的公钥加密了“我要存5000元”的信息,发送给了银行,如果中间被截取了这个信息吗,由于没有私钥,是没办法进行篡改和解密的,银行收到信息后,将信息进行解密后进行操作,然后将“操作成功/失败”的信息用小明的公钥进行加密后发送给小明,小明收到信息用自己的私钥进行解密操作。

    常见非对称加密算法:RSA、DSA;

优缺点:

  • 安全性更高,公钥是公开的,秘钥是自己保存的,不需要将私钥给别人。

  • 加密和解密花费时间长、速度慢,只适合对少量数据进行加密。


中间人攻击:

SSH 登录过程中采用的非对称的加密方式,这里会有一个问题,如果有人截取了登录请求,冒充主机,将自己伪造的公钥给到用户,用户可能就傻傻分不清楚了。

一般有两种处理方式,也是我们平时常见的,分别是:公钥指纹和上传公钥;

  • 公钥指纹

    “公钥指纹”,是指公钥长度较长很难比对时,对其进行MD5计算,将它变成一个128位的指纹,并且将该指纹公布,由于进行了MD5加密(不可逆),也就不存在推测出公钥指纹的值;

  • 上传公钥

    “上传公钥”的方式其实我们操作过,github上,我们就经常会这么做,把自己的公钥复制到仓库中,这样登录就不再需要输入密码了;用户登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。


其实,SSH原理的过程也就是上述所说的这样,采用上述两种方式进行登录远程主机进行操作,最常见的就是我们使用Xshell登录远程服务器或者登录github时候的操作。


三、HTTPS 原理

说完SSH登录的一个过程,就得引出下HTTPS这个协议了,毕竟他们具有异曲同工之处呀!

HTTPS概念:

HTTPS是身披SSL外壳的HTTP(超文本传输协议)。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。(TLS是传输层加密协议)


SSL协议的特点:

  • SSL协议可用于保护正常运行与TCP之上的任何应用协议,如HTTP、FTP、SMTP或Telent的通信,最常见的是用户SSL来保护HTTP通信

  • SSL协议的优点在于它是应用层协议无关的。高层的应用协议能透明的建立于SSL协议之上

  • SSL协议的应用层协议之前就完成加密算法、通信密钥的协商以及服务器的认证工作。在此之后应用层协议所传送的数据都会被加密。从而保证通信的安全性。

  • SSL协议使用通信双方的客户证书以及CA根证书。允许客户/服务器应用以一种不能被偷听的方式通信,在通信双方建立起了一条安全的、可信任的通信通道。

  • 该协议使用密钥对传送数据加密,许多网站都是通过这种协议从客户端接收信用卡编号等保密信息。常用于交易过程


HTTPS 的特点:

  1. 内容加密:采用混合加密技术,中间者无法直接查看明文内容
  2. 验证身份:通过证书认证客户端访问的是自己的服务器
  3. 保护数据完整性:防止传输的内容被中间人冒充或者篡改

HTTPS中也是采用了非对称加密的方式,同样,采用非对称加密算法会遇到中间人攻击的现象,那么HTTPS又是怎么去避免这种情况呢?

  • HTTPS这里采用的是信任第三方,就好比我们去给物件做公证,我们相信公证处一样的;这个就是公证机构就是数字证书,公证处就是CA(数字证书认证机构)

数字证书就是申请人将一些必要信息(包括公钥、姓名、电子邮件、有效期)等提供给 CA,CA 在通过各种手段确认申请人确实是他所声称的人之后,用自己的私钥对申请人所提供信息计算散列值进行加密,形成数字签名,附在证书最后,再将数字证书颁发给申请人,申请人就可以使用 CA 的证书向别人证明他自己的身份了。对方收到数字证书之后,只需要用 CA 的公钥解密证书最后的签名得到加密之前的散列值,再计算数字证书中信息的散列值,将两者进行对比,只要散列值一致,就证明这张数字证书是有效且未被篡改过的。


HTTPS连接详情:

在这里插入图片描述


参考:

https://blog.csdn.net/xiaoming100001/article/details/81109617

https://www.cnblogs.com/ailx10/p/7664040.html


微信公众号:后台服务器开发

这篇关于异曲同工的SSH和HTTPS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/923569

相关文章

nginx生成自签名SSL证书配置HTTPS的实现

《nginx生成自签名SSL证书配置HTTPS的实现》本文主要介绍在Nginx中生成自签名SSL证书并配置HTTPS,包括安装Nginx、创建证书、配置证书以及测试访问,具有一定的参考价值,感兴趣的可... 目录一、安装nginx二、创建证书三、配置证书并验证四、测试一、安装nginxnginx必须有"-

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

在SSH的基础上使用jquery.uploadify.js上传文件

在SSH框架的基础上,使用jquery.uploadify.js实现文件的上传,之前搞了好几天,都上传不了, 在Action那边File接收到的总是为null, 为了这个还上网搜了好多相关的信息,但都不行,最后还是搜到一篇文章帮助到我了,希望能帮助到为之困扰的人。 jsp页面的关键代码: <link rel="stylesheet" type="text/css" href="${page

Caused by: org.hibernate.MappingException: Could not determine type for: org.cgh.ssh.pojo.GoodsType,

MappingException:这个主要是类映射上的异常,Could not determine type for: org.cgh.ssh.pojo.GoodsType,这句话表示GoodsType这个类没有被映射到

3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)

所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些制定和完善协议的人去做的,我们只需要知道协议的一个大概 HTTPS 协议 1、概述 HTTPS(Hypertext Transfer Protocol Secure)是一种安全的超文本传输协议,主要用于在客户端和服务器之间安全地传输数据

SSH连接虚拟机中的Ubuntu 12.0.4

摘要:主要是解决不能使用ssh远程Ubuntu的问题、使用的远程工具是putty、也可以使用xshell、ubunut12.0.4是装在虚拟机中的、不过这个应该没有什么影响。 一:问题的出现 前两天使用VMware装了一个ubuntu12.0.4之后、因为常常使用命令行、又喜欢在虚拟机与实体机中切来切去、感觉很不方便、就想在xp中远程ubuntu、遇到了点小意外、经过一会调试解决成功、把

【20240907问题记录(未解决)】Conda环境问题:SSH与本地环境变量不一致

Conda 允许用户在同一系统上创建多个独立的Python环境。然而,最近遇到了一个奇怪的问题:通过SSH连接到远程Ubuntu机器时,Conda环境变量的行为与本地机器不一致。以下是具体遇到的问题: 1. 问题描述 在本地Ubuntu机器上,我的conda的python版本是3.6,而pip版本可以通过命令 pip --version 查看,显示为: pip 21.3.1 from /ho