加密:
对称加密算法:
DES:
3DES:
AES
Blowfish,Twofish
IDEA
RC6
CAST5
非对称加密算法:
RSA
DSA
ELGamal
openssl加密:
enc:对称加密
-e:encrypt加密
-a:base64处理数据
openssl enc -e -des3 -a -salt -in file.in -out file.cipher(对文件内容进行加密)
openssl enc -d -des3 -a -salt -in file.cipher -out file(解密时输入加密是的口令)
dgst:摘要(hash值)
生成摘要的两种命令:1、openssl dgst -md5 filename 2、md5sum filename
genrsa:生成秘钥对
req :证书申请和证书生成
-new:生成新证书签署请求
-x509:专用于生成CA 自签证书
-key:生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/***.pem证书的保存路径
ca:ca命令是一个最小的ca应用程序。它可以用于对各种形式的证书请求进行签名,并生成crl。它还维护一个已颁发证书及其状态的文本数据库。
假冒邮件:
跟踪域名解析:
md5sum 文件 计算文件的哈希值
指定相同的salt后相同的口令加密后结果相同
openssl passwd -1(-1表示使用md5)对输入的密码进行加密
HTTPS工作过程:
传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证(向客户端发送证书),之后交换对称密钥作为会谈密钥(Session key对称秘钥)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。上图第7部就已经使用对称秘钥进行加密通信。
(sessionkey 对称秘钥 public key 公钥 private key 私钥)
gpg (可以实现对称加密也可是实现非对称加密)
实现对称加密:
-c:加密 (cipher)
-a:base64编码
-d:解密
gpg -o 解密后文件名 -d 加密后文件名
生成私钥对(在实体机上)
前提将互换秘钥的主机时间同步,否则时间滞后的主机无法导入时间靠前的主机的秘钥
gpg加密需要图形界面支持:
实现对称加密:
gpg -c file 生成file.gpg(此时系统会提示输入密码)
传输到另一台主机
gpg -o gpgfile -d file.gpg (输入加密时的密码解密)
实现非对称加密:
gpg --gen-key 生成秘钥对(公钥加私钥)
gpg -a --export -o sss.pubkey 导出公钥并将其传送给其他主机
gpg --import sss.pubkey 导入秘钥(在其他主机导入公钥)
gpg -e -r idname(本机所拥有秘钥列表的id名称) filename 使用公钥加密
生成filename.gpg文件
gpg -o filename(解密生成的文件) -d filename.gpg(将要解密的文件) 解密(使用对应的id密码解密)
gpg --delete-secret-keys id 删除秘钥
gpg --delete-keys id(删除秘钥id前需先删除对应秘钥)
或者 rm -rf .gnugp 也能删除秘钥
openssl
实现对称加密(enc即为对称加密):
openssl enc -e -des3 -a -salt -in file -out file.cipher
openssl enc -d -des3 -a -salt -in file.cipher -out filename
实现非对称加密(生成公、私钥)
生成私钥
(umask 066;openssl genrsa -out /path/to/privatekey.file (-des 对私钥进行加密,需解密) num_bits)
经过-des加密后使用需先解密:
openssl rsa -in t1.pk -out t11.pk
从私钥中提取出公钥
openssl rsa -in t11.pk -out t1.puk
证书颁发机构CA(一般只有服务端申请证书)
建立会话之前客户端需要对服务端的证书进行认证。(最终目的是使用CA机构的公钥解密证书获取服务端公钥)A为客户端;B为服务端。
(自建CA)证书申请过程:
1、创建CA(/etc/pki/tls/openssl.cnf openssl的配置文件)
创建所需要的文件
touch /etc/pki/CA/index.txt 生成证书索引数据库文件()
echo 01(16进制数) > /etc/pki/CA/serial 指定第一个颁发证书的序列号(serial中存放的是下一个要颁发的证书编号)
CA生成私钥:cd /etc/pki/CA (umask 066;openssl genrsa -out private/cakey.pem(CA秘钥必须与配置文件一致) 2048 )
生成自签名证书(申请和生成证书为一条命令):openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem(在CA自签证书必须与配置文件一致)
以下5项为必须填的。
(CA的证书直接放在/etc/pki/CA目录下)
输入相关信息:
2、用户申请证书
生成私钥:openssl genrsa -out /path/**.prikey 1024/2048
生成申请书:openssl req -new -key /path/**.prikey -out /path/**.csr
秘钥和申请同时生成的命令:
openssl req -newkey rsa:2048 -nodes -keyout **.prikey > **.csr
申请证书时:默认要求国家、省、公司名称必须和CA一致,其余unit name和commonName也是必须写的,共6项,剩余可选。一共有9个输入
将申请书传输给CA端:scp /path/**.csr ****
(使用私钥生成申请:个人理解为在使用私钥生成申请的过程中已将私钥转换为公钥和本机信息的组合,CA将此信息(包含申请端的公钥)使用CA的私钥加密后(额外包含CA上层CA的信息)颁发给申请端)
3、CA颁发证书
openssl ca -in /path/request.csr -out /etc/pki/CA/certs/request.crt -days 100
4、查看证书(newcerts目录下或certs目录下的证书均可)
CA端:openssl x509 -in /path/**.pem/crt -noout -text|issuer|subject|sefial|dates
openssl ca -status 证书编号
客户端:openssl x509 -in /path/**.crt -noout -textissuer|subject|sefial|dates
5、吊销证书
1、在客户端取得所要吊销的证书编号
openssl x509 -in /path/***.crt -noout -serial -subject
2、在CA上对比是否与index.txt中信息是否一致,执行吊销操作(以newcerts文件夹中的证书为操作对象)
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
3、仅在第一次更新吊销列表前才需要执行,后续吊销自动更新吊销证书编号
echo 01 > /etc/pki/CA/crlnumber
4、更新吊销证书列表(/etc/pki/CA/crl.pem)(-out)
openssl ca -gencrl -out /etc/pki/CA/crl.pem
5、查看crl文件
openssl crl -in /etc/pki/CA/crl.pem -noout -text
吊销证书后:crl.pem对比
加salt:避免通过hash运算来(若得到相同值证明一样)来猜测密码,即便密码相同,得到的密文也不相同。
文件hash值
指定salt生成口令
base64编码机制(base64编码表一共有64个字符)
将所要编码字符全部转换为二进制,从前向后,每6位一分隔,若最后一组位数不足,则补0,在base64编码中最后添加=号表示有补充位。
openssl rand -base64 10
生成秘钥对:
生成私钥,公钥可由私钥推出,反之不可。
生成私钥:openssl genrsa -out /path/test.key 1024
生成公钥:openssl rsa -in test.key -pubout -out test.pub
(umask 077; openssl genrsa –out test.key –des 2048)
-des 将生成的秘钥在进行加密,不能直接使用,必须解密后使用。
加密后秘钥文件比未加密秘钥要大:
查看有加密提示
解密后才可使用:
再次查看没有了加密提示。
使用私钥生成公钥:
openssl rsa -in private.key -pubout -out public.key
下图表示避免中间人截获
颁发证书简要步骤:
建立CA
1、生成私钥文件--自签文件(x509格式为自签证书)--建立database--建立下一个颁发证书的编号文件
生成自签名证书命令
2、证书申请
生成私钥--生成证书申请文件--将申请文件上传至CA
生成证书
***.old文件为上一文件的备份
***.attr文件时同一个申请的唯一性。(yes or no)
查看证书
3、颁发证书
将***.crt文件传给申请端。
吊销证书
查看证书状态
查看吊销证书
销编号和吊销的证书编号
telnet服务默认23端口
SSH服务(默认22端口)
vim /etc/ssh/sshd_config 修改其中的prot为其他端口
systemctl restart sshd(重启服务)
ListenAddress ip地址 监听地址
查看sshd服务是否开机启动:
虚拟机可以在网卡配置文件中修改逻辑上的MAC地址
HW为实际的硬件地址,MAC为逻辑上的硬件地址(ifconfig显示的)
ssh首次连接MD5为对方公钥的hash值,服务端将公钥发给客户端,(服务端可能会将自己公钥的hash公布在网上,可供对比)在输入“yes”后已经完成了公钥交换。
ssh连接主机文件存放位置
ssh链接的两种方式:
1、基于用户名口令
1 客户端发起ssh请求,服务器会把自己的公钥发送给用户
2 用户会根据服务器发来的公钥对密码进行加密
3 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功
2、基于秘钥链接
1 首先在客户端生成一对密钥(ssh-keygen)
2 并将客户端的公钥ssh-copy-id 拷贝到服务端
3 当客户端再次发送一个连接请求,包括ip、用户名
4 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串
5 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
6 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
7服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
redhat5上主机秘钥存放位置
临时添加ip ip a a ip地址/24 dev ens33
逐层跳跃,最后一条之前ssh 加t
基于口令的ssh登录:
其中的公钥、私钥是ssh服务的公钥、私钥。
基于秘钥的ssh登录:
在客户端生成秘钥对:-t 指定算法
ssh-keygen rsa [-P '老密码'] -f “输出秘钥路径”
ssh-keygen -t rsa ( -f "/root/.ssh/id_rsa"若省略则默认为~/.ssh/id_(算法))
ssh-copy-id [email protected](-i 指定要复制的文件的路径)
私钥丢失 则基于秘钥链接则不安全,可使用-p参数对秘钥进行加密,在链接时需要输入秘钥的加密口令(-P:在使用命令生成密钥时使用-P “口令” -p:对已经生成的秘钥添加或修改密码)
可启用代理托管程序 ssh-agent bash(开启子进程,退出进程、终端关闭或机器重启后链接需输入秘钥加密口令)相当于开启子进程,后台运行后,执行ssh-add ,输入秘钥后,执行ssh链接远程主机,不需要输入秘钥加密口令,若退出ssh-agent程序(exit)则再ssh登录则又需要输入秘钥加密口令。
远程通过ssh执行命令:ssh IP 命令
所有主机公用一套私钥对:ssh-copy-id -i .ssh/id_rsa.pub 127.0.0.1(将自己的公钥添加到本机的authorized-keys表::基于秘钥登录的第四步),再将.ssh目录拷贝到其他主机(实现共用一套秘钥对)
ssh: -p:指定主机的ssh服务端口号 -b: 指定本地的ip地址
scp:
-C 压缩数据流
-r :递归复制
-p:保持源文件的属性
-q:静默模式
-P PROT 指明远程主机监听端口
ssh 源(本机或远程主机) 目标(远程或本机)
/etc/ :复制etc下的目录和文件
/etc :scp -r复制目录etc本身
rsync命令:增量复制(值复制变化的内容)
rsync -av /data/test1 172.16.130.17:/data/test1/(首次执行复制全部,后期再复制全部文件,只将有变动的复制到远程主机)
sftp: !pwd 查看本机pwd pwd查看远程服务器pwd get下载 put上传 cd 切换远程主机所在目录 lcd 修改本机所在目录
pssh:可在多台服务器执行命令的工具
-i : 每个服务器内部处理信息输出
-H :"主机IP"
pssh -H [email protected] -i ‘sed -i "s#^SELINUX=.*#SELINUX=disabled#" /etc/selinx/config’
-h 多主机ip文件(基于秘钥链接)
-i 执行命令
-o 命令执行结果输出到屏幕的同时输出到文件
-e 错误输出文件
-A 手动输入密码执行密令
基于key验证
pssh -h ip.txt 'sed -i "s/^SELINUX=.*/SELINUX=disabled" /etc/selinux/config`
pscp.pssh:将本机文件拷贝到远程主机
下图将两个文件拷贝到远程主机/data下
pslurp:从远程主机下载文件到本机
-L:指定本机存放路径(dirname)
-H:指定主机
-h:包含主机ip文件名
pslurp -H 172.16.130.17(远程主机IP) -L /data/empty(保存到本地文件夹下) /etc/passwd(要拷贝的远程主机) user(保存到本地更名为user)