前言:
GPG是自由软件基金会开发用于替代商业加密软件PGP的替代品,取名为GnuPG。GPG有许多用途,本文主要介绍文件加密。红帽系列Linux中软件包为gnupg2
对称加密方式:
1、实用gpg完成文件加密
使用方法:gpg -c file
在弹出页面输入两遍口令即可加密文件,加密后会生成原文件名加.gpg的加密文件,注意此时未加密文件仍然存在,可删除原文件。
2、查出加密文件
使用方法:gpg -d 加密文件
在弹出如上图界面输入口令即可查看文件
3、把加密的文件解密出来
使用方法:gpg -o newfilename -d file.gpg
非对称加密方式:
一、秘钥生成
1.1 在hostA主机上生成公钥/私钥对
gpg --gen-key
选择加密算法界面,这里选择1默认加密和证书都使用RSA算法。
1.2 设定密码长度
输入秘钥长度,越长越安全。这里直接回车默认2048位。
1.3 设定密码有效期
如确定秘钥可以妥善管理可以选择“0”,永不过期。
1.4 输入姓名邮箱信息
1.5 在弹出框内输入加密私钥口令
1.6系统就开始生成密钥
这时需多做些琐事(像是敲打键盘、移动鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
1.7生成秘钥成功
字符串"EDDD6D76",这是"用户ID"的Hash字符串,可以用来替代"用户ID"。
二、秘钥管理
2.1 查看秘钥
2.2 删除秘钥及撤销证书
#删除列表中某公钥 gpg --delete-keys [用户ID] #用户名ID可以为hash码或邮箱、用户名 #删除列表中某私钥 gpg --delete-secret-keys [用户ID] #撤销证书 gpg --gen-revoke [用户ID]
2.3 上传公钥到服务器
gpg --send-keys [用户ID] --keyserver hkp://subkeys.pgp.net
由于公钥服务器没有检查机制,任何人都可以用你的名义上传公钥,所以没有办法保证服务器上的公钥的可靠性。通常,你可以在网站上公布一个公钥指纹,让其他人核对下载到的公钥是否为真。fingerprint参数生成公钥指纹。
gpg --fingerprint [用户ID]
三、 实现公钥加密传输
3.1 在hostA主机上导出公钥到wang.pubkey
gpg -a --export -o wang.pubkey
从hostA主机上复制公钥文件到需加密的B主机上
scp wang.pubkey hostB:
3.2 在需加密数据的hostB主机上生成公钥/私钥对
gpg --list-keys gpg --gen-key
在hostB主机上导入公钥
gpg --import wang.pubkey gpg --list-keys
3.3 用从hostA主机导入的公钥,加密hostB主机的文件file,生成
file.gpg gpg -e -r wangxiaochun file file file.gpg
复制加密文件到hostA主机
scp fstab.gpg hostA:
3.4 在hostA主机解密文件
gpg -d file.gpg gpg -o file -d file.gpg
四、签名&验证签名
4.1 对文件签名
不加密文件,只需要对文件签名,表示这个文件确实是本人发出的。sign参数用来签名。
gpg --sign demo.txt
运行上面的命令后,当前目录下生成demo.txt.gpg文件,这就是签名后的文件。这个文件默认采用二进制储存,
4.2 如果想生成ASCII码的签名文件,可以使用clearsign参数。
gpg --clearsign demo.txt
运行上面的命令后 ,当前目录下生成demo.txt.asc文件,后缀名asc表示该文件是ASCII码形式的。
4.3 如果想生成单独的签名文件,与文件内容分开存放,可以使用detach-sign参数。
gpg --detach-sign demo.txt
运行上面的命令后,当前目录下生成一个单独的签名文件demo.txt.sig。该文件是二进制形式的,如果想采用ASCII码形式,要加上armor参数。
gpg --armor --detach-sign demo.txt
4.4 验证签名
收到别人签名后的文件,需要用对方的公钥验证签名是否为真。verify参数用来验证。
gpg --verify demo.txt.asc demo.txt
本文出自 “linux运维” 博客,请务必保留此出处http://arm2012.blog.51cto.com/2418467/1972546
原文地址:http://arm2012.blog.51cto.com/2418467/1972546