使用gpg实现对称加密
**实验:在主机A和主机B之间实现对称加密传输数据**
gpg -c file
scp file IP(将文件传输到另一台主机上)
在另一台主机上解密(与加密使用同一个密码)
gpg -d file
使用gpg实现非对称加密
**实验:在主机A和主机B之间实现非对称加密传输数据**
1、现在客户端B上生成公钥:
gpg --gen-key
按步骤操作即可生成密钥对,放在家目录下的.gnupg目录下
2、将公钥导出
gpg -a --export -o /data/msqpunkey
此时公钥以文本形式导入到/data目录下
3、将导出的公钥传送到主机A
scp key IPA/data
4、在主机A上生成密钥对,方法如上1。
5、将主机B传过来的公钥导入
gpg --import /data/msqpubkey
6、对文件file进行加密(使用主机B的公钥)
gpg -e -r lovey(此处指定的是公钥对应的uid) f1
将加密后的文件传输给B
scp f1.gpg IPB:/data
7、在主机B进行解密操作
gpg -o f1 -d f1.gpg
8、删除本机上其余主机的公钥
gpg --delete-keys lovey
如果要删除本机的公钥,需要先删除本机的私钥
gpg --delete-secret-keys lovem
gpg --delete-keys lovem
上述方法采取非对称加密的方式存在重大安全隐患:中间人攻击。那么如何解决这个问题呢:
CA和证书
建立私有CA,并实现证书申请
1、在服务器上建立私有CA
cd /etc/pki/CA
(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
touch index.txt
echo 00 > serial
2、在客户端申请证书
(umask 077;openssl genrsa -out app.key 1024)
openssl req -new -key app.key -out app.csr
scp app.csr 服务器IP:/etc/pki/CA/z
3、在服务器上颁发证书
openssl ca -in app.csr -out /etc/pki/CA/certs/app.crt -days 1000
scp /etc/pki/CA/certs/app.crt 客户端:
4、脚本实现
creat_ca.sh
request_crt.sh
tls协议和openssl工具
HTTPS:http协议经过tls协议加密。
HTTPS工作原理:
1、客户端向HTTPS服务器发送请求
2、服务器回应证书(被CA签过名的公钥,CA信息等)
3、客户端检查证书(拿CA的公钥解密,要争有效期等)
4、检查如果没通过会发出警告信息,检查通过后客户端生成一个随机key(秘钥),并用服务器的公钥加密key,发送给服务器
5、服务器用自身私钥解密解密客户端发送的随机key,并用此key加密之后的传输数据。
OpenSSL
OpenSSL是一个开源项目,由三个组件组成
1 | OpenSSL:多用途的额明航工具,由openssl包提供 |
openssl命令:
两种运行模式:
交互模式
批处理模式
标准命令,消息摘要命令,加密命令
标准命令:enc,ca,req,…
1 | openssl实现对文件的对称加密: |
1 | openssl生成用户密码: |
1 | openssl生成随机数: |
1 | 利用openssl生成秘钥对 |
1 | 随机数生成器:伪随机数 |