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
- -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 #指定公钥输出文件
- 生成公钥
- openssl version #查看openssl版本
SSH
- ssh 协议: 安全外壳协议 ,Secure Shell的缩写 ,传统的远程登录服务(telnet)采用明文传输数据,易被监听窃取数据和用户口令,ssh采用加密算法将所有传输的数据进行加密与压缩,能够安全、高效的完成数据传输,其主要用于代替telnet实现远程登录,为ftp等服务提供安全的传输通道
- 安全验证
- 基于口令的验证
- 基于秘钥的验证
- 服务端
- 安装(Centos7默认安装)
- yum install openssh-server
- 配置文件/etc/ssh/sshd_config
- 安装(Centos7默认安装)
#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
- -t #指定加密方式
- ssh-copy-id -i [FILE] USER@HOST将公钥分发至ssh服务器登录用户家目录下
- -i #指定公钥文件,默认为~/.ssh/id_rsa.pub
- -i #指定公钥文件,默认为~/.ssh/id_rsa.pub
- ssh-keygen -t ras 生成秘钥对
- scp工具
- 用于实现跨主机间文件上传与下载
- 命令格式:scp [options] source destion
- -r #递归复制
- -p #保留属性((小写)
- -P #指定端口(大写)
- 文件上传
- 文件下载
- Windows客户端
常用客户端软件:xshell、secureCRT等
- 连接
- 指定登录主机ip及端口设定用户名与密码即可远程登录
- 指定登录主机ip及端口设定用户名与密码即可远程登录
- 基于秘钥验证登录(xshell)
- 使用xshell创建公钥与秘钥
- 选择使用的加密算法及长度
- 自动生成秘钥对
- 输入秘钥文件名及秘钥文件加密密码,可为空
- 为空时,提示
- 可x选择将公钥保存为文件或复制出来
- 完成后进入秘钥管理界面,可以进行秘钥的生成、删除、导入、导出
- 使用rz命令秘钥保存的登录用户家目录下(需要安装lrzsz)
rz:文件上传工具,sz:文件下载
- 也可使用xftp工具(需要安装xftp软件)
- 或是直接使用xshell登录后复制公钥内容粘贴到登录用户家目录下
- 修改配置文件
- 修改xshell登录选项
- 使用xshell创建公钥与秘钥
以上是关于SSL与SSH协议初识的主要内容,如果未能解决你的问题,请参考以下文章