• ssh-keygen和openssl的区别


    OpenSSL

    1. OpenSSL是用于应用程序的软件库,该应用程序可保护计算机网络上的通信免遭窃听或需要识别另一方的身份,是SSL和TLS协议的开源实现。
    2. 采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux、Windows、Mac OS等多种平台。
    3. OpenSSL整个软件包大概可以分成三个主要的功能部分:1.密码算法库2.SSL协议库3.应用程序
    4. 密码算法库是一个强大完整的密码算法库,它是OpenSSL的基础部分,也是很值得一般密码安全技术人员研究的部分,它实现了目前大部分主流的密码算法和标准。主要包括对称算法、非对称算法、散列算法、数字签名和认证、X509数字证书标准、PKCS12、PKCS7等标准。其他两个功能部分SSL协议和应用程序都是基于这个库开发的。
    5. SSL协议部分完全实现和封装了SSL协议的三个版本和TLS协议。
    6. 应用程序覆盖了密码技术的应用,主要包括了各种算法的加密程序和各种类型密钥的产生程序(如RSA、Md5、Enc等等)、证书签发和验证程序(如Ca、X509、Crl等)、SSL连接测试程序(如S_client和S_server等)以及其它的标准应用程序(如Pkcs12和Smime等)。

    OpenSSL

    OpenSSL 是一个开源项目,其组成主要包括一下三个组件:

    1. openssl:多用途的命令行工具

    2. libcrypto:加密算法

    3. libssl:加密模块应用库,实现了ssl及tls

    openssl可以实现秘钥证书管理、对称加密和非对称加密 。

    非对称加密

    1. 先使用 genrsa 标准命令生成私钥;
    2. 再使用 rsa 标准命令从私钥中提取公钥;
    openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits]
    
    • 1
    # 生成私钥,指定私钥的长度为2048bit   1024基本安全, 2048非常安全
    openssl genrsa -out rsa_private_key.pem 2048
    # 根据私钥生成对应的公钥
    openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key_2048.pub
    # 私钥转化成pkcs8格式, 非必须,pkcs8格式解析起来更方便
    openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt > rsa_private_key_pkcs8.pem
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    OpenSSH的ssh-keygen

    1. OpenSSH 是使用 SSH 协议进行远程登录的连接工具。 它加密所有通信讯息以消除窃听、连接劫持。 此外,OpenSSH 提供了大量的安全隧道功能、多种身份验证方法和复杂的配置选项。
    2. OpenSSH 包含的组件如下:

    (1)ssh:OpenSSH 远程登录客户端,作为 rlogin 和 Telnet 的替代方案。

    (2)scp:OpenSSH 安全文件复制,作为 rcp 的替代方案,将文件复制到其他电脑上。

    (3)sftp:OpenSSH 安全文件传输,类似于 scp。

    (4)sshd:OpenSSH 守护进程。

    (5)ssh-keygen:OpenSSH 身份验证密钥实用程序,产生RSA或ECDSA密钥,用来认证用。

    (6)ssh-agent:OpenSSH 身份验证代理,用于帮助用户不需要每次都要输入密钥的工具。

    (7)ssh-add:向 OpenSSH 身份验证代理添加私钥身份,用于帮助用户不需要每次都要输入密钥的工具。

    (8)ssh-keyscan:从服务器收集 SSH 公钥,并记录公钥。

    ssh

    在 Linux 系统上 SSH 是非常常用的工具,通过 SSH Client 我们可以连接到运行了 SSH Server 的远程机器上。SSH Client 的基本使用方法是:

    ssh user@remote -p port
    
    • 1

    执行 ssh-keygen 即可生成 SSH 钥匙,一路回车即可。

    local$ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/user/.ssh/id_rsa):
    Created directory '/home/user/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/user/.ssh/id_rsa.
    Your public key has been saved in /home/user/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:47VkvSjlFhKRgz/6RYdXM2EULtk9TQ65PDWJjYC5Jys user@local
    The key's randomart image is:
    +---[RSA 2048]----+
    |       ...o...X+o|
    |      . o+   B=Oo|
    |       .....ooo*=|
    |        o+ooo.+ .|
    |       .SoXo.  . |
    |      .E X.+ .   |
    |       .+.= .    |
    |        .o       |
    |                 |
    +----[SHA256]-----+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    这段话告诉了我们,生成的公钥放在了 ~/.ssh/id_rsa.pub,私钥放在了 ~/.ssh/id_rsa。

    区别

    1. OpenSSH常常被误认以为与OpenSSL有关联,但实际上这两个计划有不同的目的,不同的发展团队,名称相近只是因为两者有同样的软件发展目标──提供开放源代码的加密通讯软件。
    2. OpenSSH是SSH协议的具体实现、OpenSSL是SSL与TSL的具体实现。OpenSSH 与OpenSSL只是名字相似但是关联不大,同样软件发展目标是为提供开放源代码的加密通讯软件。而生成非对称公私钥的方式有很多,如OpenSSH 、OpenSSL与GnuPG。

    SSL和TLS

    1. SSL (Secure Sockets Layer)安全套接层。是由Netscape公司于1990年开发,用于保障Word Wide Web(WWW)通讯的安全。主要任务是提供私密性,信息完整性和身份认证。1994年改版为SSLv2,1995年改版为SSLv3.

    2. TLS(Transport Layer Security)安全传输层协议,)用于在两个通信应用程序之间提供保密性和数据完整性。该标准协议是由IETF于1999年颁布,整体来说TLS非常类似SSLv3,只是对SSLv3做了些增加和修改。

    在这里插入图片描述

    SSL加密知名协议

    1. HTTP over SSL:简写https,加密网页浏览是设计SSL的初衷,HTTP也是第一个使用SSL保障安全的应用层协议。
    2. Email over SSL:类似于HTTP over SSL,邮件协议例如:MTP,POP3、IMAP也能支持SSL。SMTP over TLS的标准文档在RFC2487。POP3和IMAP over TLS的标准化文档在RFC2595.

    协议结构

    在这里插入图片描述

    1. SSL的体系结构中包含两个协议子层,其中底层是SSL记录协议层(SSL Record Protocol Layer);高层是SSL握手协议层(SSL HandShake Protocol Layer)。

    2. SSL协议主要分为两层:

      SSL记录协议层的作用是为高层协议提供基本的安全服务。SSL纪录协议针对HTTP协议进行了特别的设计,使得超文本的传输协议HTTP能够在SSL运行。纪录封装各种高层协议,具体实施压缩解压缩、加密解密、计算和校验MAC等与安全有关的操作。

      SSL握手协议层包括SSL握手协议(SSL HandShake Protocol)、SSL密码参数修改协议(SSL Change Cipher Spec Protocol)和SSL告警协议(SSL Alert Protocol)。握手层的这些协议用于SSL管理信息的交换,允许应用协议传送数据之间相互验证,协商加密算法和生成密钥等。

    3. SSL握手协议的作用是协调客户和服务器的状态,使双方能够达到状态的同步。

    4. 其中最重要的是记录协议和握手协议:

      SSL记录协议:它建立在可靠的传输(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能。
      SSL握手协议:它建立在SSL记录协议之上,用于在实际的数据传输开始之前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

  • 相关阅读:
    基于Android studio的个人日程时间管理系统java
    .NET 6学习笔记(7)——ASP.NET Core通过配置文件启用HTTPS
    shell编程流程控制语句case和select
    全国双非院校考研信息汇总整理 Part.7
    C++ 基础:指针和引用浅谈
    从金蝶云星空到钉钉通过接口配置打通数据
    获取文件 SHA-256 值
    bug记录(feign)——如何给feign加上请求头相关的参数,让生产者获得请求头中参数
    计算机网络(IP/TCP网络分层)
    torch的gpu上做fft,其中dim参数含义解释
  • 原文地址:https://blog.csdn.net/General_zy/article/details/127974471