此实验需要两个Linux虚拟机
实验步骤:
1.首先我们要看当前的Linux系统上是否已经了gnupg软件,正常系统默认安装此软件;我们输入下列命令查看本机是否安装 。
[root@localhost 桌面]# rpm -qa |grep gnupg
2.生成密钥对:
[root@localhost tmp]# gpg --gen-key
------此时会出现对话框要求输入私钥保护密码
输入:0123456789
3.查看自己的私钥
[root@localhost tmp]# gpg --list-secret-keys
查看自己的公钥
[root@localhost tmp]# gpg --list-keys
4.(虚拟机2)用同样的方法在另一台虚拟机上使用gpg生成密钥对(要求写出过程,注意该虚拟机私钥密码应与虚拟机1私钥密码不同以示区分),并使用下列命令导出公钥。
1)查看软件
[root@localhost 桌面]# rpm -qa |grep gnupg
2)进入tmp,生成密钥对
[root@localhost 桌面]# cd /tmp
[root@localhost tmp]# gpg --gen-key
3)查看自己的私钥
[root@localhost tmp]# gpg --list-secret-keys
4)查看公钥:
[root@localhost tmp]# gpg --list-keys
5)导出虚拟机2的公钥,然后把这个文件传到虚拟机1上
[root@localhost tmp]# gpg --export>machine2.asc
5.在虚拟机1使用下列命令将对方的公钥导入
[root@localhost tmp]# gpg --import machine2.asc
使用gpg --list-keys命令看是否成功导入了对方的公钥
[root@localhost tmp]# gpg --list-keys
6.把新导入的公钥签名
[root@localhost tmp]# gpg --sign-key example2:这里example2应是虚拟机2密钥的real name 。
此密码为虚拟机1的私钥密码
查看是否正确地对对方公钥签名了
[root@localhost tmp]# gpg --list-sigs
采用同样的方法将虚拟机1的公钥导出传到虚拟机2的机器上 。
7.用对方的公钥来加密文件了;首先建立一个文件 (虚拟机1的操作)
[root@localhost tmp]# echo “this is example’s file”>encryptfile
8.用对方的公钥来加密此文件
[root@localhost tmp]# gpg --encrypt -r example2 encryptfile;使用刚才导入的虚拟机2的公钥进行加密,执行完毕后,会生成加密后的文件encryptfile.gpg。
[root@localhost tmp]# cat encryptfile.gpg (查看密文)
密文为乱码,不可读。
9.将此加密后的文件传到虚拟机2上,虚拟机2用下命令解密
[root@localhost tmp]# gpg --decrypt encryptfile.gpg
此时需要输入虚拟机2私钥的密码。
10.虚拟机2使用虚拟机1的公钥加密一文件,重复以上过程。
此时需要输入虚拟机1私钥的密码(0123456789)。
10.如果需要发送一封既加密又签名的邮件内容,使用下面命令。
#gpg -se -r receiver_public_keyname(刚导入的公钥) filename
11.接收者收到这样的信件,只需输入:
#gpg -d filename.gpg