SSL与SSH协议初识

Posted lastyear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSL与SSH协议初识相关的知识,希望对你有一定的参考价值。

SSL和SSH协议

加密类型

  • 对称加密
    • 加密与解密使用相同的秘钥,如:DES、3DES、AES等
    • 优点:算法公开、加密速度快,效率高
    • 缺点:秘钥分发较为复杂,管理困难,不能够实现数字签名
  • 非对称加密
    • 加、解密时使用成对的公钥(publickey)与私钥(privatekey)来完成,公钥是公开的,私钥由用户自行保存,公钥由私钥生成,无法由公钥逆向推导出私钥,如:RSA、DSA、Elgamal等
    • 发送发使用接收方的公钥加密,接受方需要使用自己的私钥进行解密,保证数据的私密性
    • 发送方使用自身私钥加密后再使用接收方公钥加密,接受者使用自身私钥解密后再使用发送方的公钥进行二次解密,具有不可抵赖性
    • 优点:算法强度复杂,安全性高,秘钥分配简单,便于管理,能够实现数字签名
    • 缺点:加解密计算量大,速度慢
    • 常用于会话钥(对称加密秘钥)分发
  • 单向加密
    • 对数据进行hash,提取特征码,具有不可逆的特点,如:MD5、SHA等
    • 发送方在发送数据时对数据进行hash,提取特征码,与明文一同发送,接受方接受后对明文信息进行相同hash提取特征码,与接收到的特征码比对,进行数据完整性与一致性校验
      技术图片

SLL

  • Secure Sockets Layer:安全的套接字层
    • SSL 是指安全套接字层,确保互联网连接安全,利用数据加密保护网络中传输的数据,防止信息被截取和窃听。为Netscape(网景)所研发
    • 工作在应用层与传输层之间,为基于TCP等可靠连接的应用层协议提供安全性保障
  • 主要功能
    • 身份验证
      • 使用颁发的数字签名证书对通信双方身份进行验证,其中客户端身份验证为可选
    • 消息完整性验证
      • 使用MAC算法进行消息完整性验证
    • 数据的保密性
      • 使用对称加密算法对传输的数据进行加密
  • openssl
    • 开源的ssl协议
    • 组件包括:
      • openssl:命令行工具
      • libcrypto:密码算法库
      • libssl:ssl协议库
        注:cnetos7默认安装了openssl
  • openssl的使用
    • openssl version #查看openssl版本
      技术图片
    • openssl enc #对称加密方式进行加、解密
      • -e #加密
      • -d #解密,未指定时表示加密
      • -ciphername #指定对称算法,-des3、-ase128、-cast、-blowfish等
      • -a|-base64 #指定使用base64编码格式
      • -salt #插入随机数作为加密内容
      • -in FILENAME #指定要加密的文件位置
      • -out FILENAME #指定加密后的文件存放位置
      • 加密
        技术图片
        技术图片
      • 解密
        技术图片
    • openssl dgst -ciphername FILENAME #单向加密,提取特征码,不可逆
      • -ciphername #指定单向加密算法,如md5,sha1sum
        技术图片
    • openssl genrsa -ciphername [in | out] FILENAME NUM#生成秘钥
      • -ciphername #指定私钥 文件的加密方式
      • -out #指定 生成的私钥文件
      • -in #指定生成公钥所基于的私钥文件
      • NUM #长度,默认512
      • 生成私钥
        技术图片
    • openssl rsa -in FILE1 [-out FILE2 | -pubout] #基于私钥提取公钥
      • -pubout #输出显示
      • -in #指定基于的秘钥文件
      • -out #指定公钥输出文件
      • 生成公钥
        技术图片

SSH

  • ssh 协议: 安全外壳协议 ,Secure Shell的缩写 ,传统的远程登录服务(telnet)采用明文传输数据,易被监听窃取数据和用户口令,ssh采用加密算法将所有传输的数据进行加密与压缩,能够安全、高效的完成数据传输,其主要用于代替telnet实现远程登录,为ftp等服务提供安全的传输通道
  • 安全验证
    • 基于口令的验证
    • 基于秘钥的验证
  • 服务端
    • 安装(Centos7默认安装)
      • yum install openssh-server
    • 配置文件/etc/ssh/sshd_config
#Port 22 #监听端口,默认22
#AddressFamily any #地址类型,any指兼容ipv4与ipv6
#ListenAddress 0.0.0.0 #监听的地址IPV4,0.0.0.0表示本机所有地址
#ListenAddress ::   #监听的地址IPV6,::为ipv6全0的缩写

HostKey /etc/ssh/ssh_Family
HostKey /etc/ssh/ssh_host_ecdsa_key #ecdsa私钥认证
HostKey /etc/ssh/ssh_host_ed25519_key #ed25519私钥认证
# Ciphers and keyingecdsa
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV #ssh登录信息将被记录保存,/etc/log/secure
#LogLevel INFO #日志级别


#LoginGraceTime 2m #登录宽限时间
#PermitRootLogin yes #禁止root登录
#StrictModes yes
#MaxAuthTries 6 #密码最大尝试次数,达到上限将会限制一定时间登录
#MaxSessions 10 #开启的会话最大数量

#PubkeyAuthentication yes

AuthorizedKeysFile  .ssh/key-centos7-1.pub #服务器生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面,将私钥发给客户端

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

#PermitEmptyPasswords no  #是否允许使用空密码
PasswordAuthentication yes #是否使用基于口令的认证

ChallengeResponseAuthentication no #是否允许任何的密码认证

# Kerberos options #Kerberos第三方认证选项
#KerberosAuthentication no #是否启用
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes

# GSSAPI options
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
#GSSAPIEnablek5users no

UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes #是否支持远程连接图形显示
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation sandbox
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes  #是否启用dns反向解析,建议no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

# override default of no subsystems
Subsystem   sftp    /usr/libexec/openssh/sftp-server
AllowUsers USERNAME #登录白名单,使用该选项后为指定的用户被拒绝远程登录
  • Linux客户端
    • linux上常使用ssh、scp、sftp实现跨系统远程登录与文件传输(centos7默认安装)
    • 配置文件/etc/ssh/ssh_config
    • 命令格式:ssh [USER@HOST] [COMMAND]
      • 指定COMMAND后不登录,只在远端主机执行命令
      • -l USER #指定登录用户,同USER@,未指定时使用当前主机上的用户进行登录
      • -p #指定端口(默认22)
    • 登录后使用exit退回到本地用户
      技术图片
      技术图片
    • ssh基于秘钥验证登录
      • ssh-keygen -t ras 生成秘钥对
        • -t #指定加密方式
          技术图片
          默认在/root/.ssh下生成秘钥id_rsa与公钥id_rsa.pub
          技术图片
      • ssh-copy-id -i [FILE] USER@HOST将公钥分发至ssh服务器登录用户家目录下
        • -i #指定公钥文件,默认为~/.ssh/id_rsa.pub
          技术图片
          技术图片
    • scp工具
      • 用于实现跨主机间文件上传与下载
      • 命令格式:scp [options] source destion
        • -r #递归复制
        • -p #保留属性((小写)
        • -P #指定端口(大写)
      • 文件上传
        技术图片
      • 文件下载
        技术图片
  • Windows客户端
    • 常用客户端软件:xshell、secureCRT等

    • 连接
      • 指定登录主机ip及端口设定用户名与密码即可远程登录
        技术图片
        技术图片
    • 基于秘钥验证登录(xshell)
      • 使用xshell创建公钥与秘钥
        技术图片
      • 选择使用的加密算法及长度
        技术图片
      • 自动生成秘钥对
        技术图片
      • 输入秘钥文件名及秘钥文件加密密码,可为空
        技术图片
      • 为空时,提示
        技术图片
      • 可x选择将公钥保存为文件或复制出来
        技术图片
      • 完成后进入秘钥管理界面,可以进行秘钥的生成、删除、导入、导出
        技术图片
      • 使用rz命令秘钥保存的登录用户家目录下(需要安装lrzsz)
        rz:文件上传工具,sz:文件下载
        技术图片
        技术图片
        技术图片
      • 也可使用xftp工具(需要安装xftp软件)
        技术图片
        技术图片
      • 或是直接使用xshell登录后复制公钥内容粘贴到登录用户家目录下
      • 修改配置文件
        技术图片
        技术图片
      • 修改xshell登录选项
        技术图片

以上是关于SSL与SSH协议初识的主要内容,如果未能解决你的问题,请参考以下文章

HTTPS:初识SSL

SSH 与 SSL

SSL和SSH和OpenSSH,OpenSSL有什么区别

openssh与openssl是啥关系

Linux-SSL和SSH和OpenSSH,OpenSSL有啥区别

ftps和sftp区别