mutt上玩转PGP

来源:互联网 发布:一元购完整源码 编辑:程序博客网 时间:2024/05/18 03:22

MIT PGP Key Server上查了下, 原来11年的时候我就上传过我的公钥了。现在一看,已经过了六年了。真是一眨眼的功夫。

你说邮件上签名有个毛用?嗯,减少你被骗的可能。
因为邮件的协议并不安全,所有很有可能你收到的邮件

  • 并不是你看到的发件人发的
  • 可能邮件的内容被串改了

有了签名/验证,你就可以

  • 让别人知道邮件是你发的
  • 验证收到的邮件确实是完整的

好了,淡扯完了,开始正经的吧。

准备“钥匙圈”

生成你的密钥

生成的方式很简单,一条命令搞定。

gpg –gen-key

其中还有一些详细的步骤,不是本文重点。
我觉得细节上这个博客写的很好,很详细。建议大家去看看。

列出密钥

好了,现在你的系统上就保存了你自己的密钥了。
可以使用下面的命令列出系统中的密钥。

gpg –list-keys

显示的结果如下:

/Users/weiyang/.gnupg/pubring.gpg---------------------------------pub   4096R/282FCEF0 2016-12-27uid       [ultimate] WeiYang <richard.weiyang@gmail.com>sub   4096R/9B144D5A 2016-12-27

这样就表明这个密钥生成基本就成功了~

上传公钥

既然是公钥么,就是要给别人用的。原来已经有一个公钥的存储系统了。执行下面的命令就可以上传自己的公钥了。

gpg –send-keys 282FCEF0

好了,就这么简单。

获取公钥

嗯。对的,我想你是猜到了。既然自己可以上传,别人就应该可以获取你的公钥~

也是一条命令。

gpg –recv-keys [ID]

试了下,这个ID有点讨厌,你需要现在这个MIT PGP Key Server上找找对应的人ID。还好,还不算麻烦。

多啰嗦一句,理论上谁都可以冒充你上传你的公钥。所以下载的公钥也不一定是就是对应的那个人的。最安全的就是当面给你。

当对方给你了公钥文件,可以使用下面的命令将公钥加入本地的“钥匙圈”。

gpg –import “key file”

签名和验证

准备好了钥匙,现在要做的就是对邮件签名,和对收到的邮件做验证。

文件签名

比如你有个文件sample.txt,那用如下命令做签名。

gpg –clearsign sample.txt

此时就会生成一个带有签名的文件了。 名字是sample.txt.asc

文件验证

对已经签名的文件,执行下面的命令验证。

gpg –verify sample.txt.asc

此时会有相应的显示。

gpg --verify sample.txt.ascgpg: Signature made Fri Jan 27 16:46:05 2017 CST using RSA key ID 4FE5C4DDgpg: Good signature from "Wei Yang<richard.weiyang@gmail.com>" [ultimate]

让mutt签名和验证邮件

到这里很简单了,只是一些mutt的配置问题了。这个主要参考了这个页面.

原文中的配置挺多的,因为我只需要签名和验证就行了,不需要加密解密。在mutt配置文件.muttrc中,只需要添加下面的配置。

#GPGsource ~/gpg.rcset pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"set pgp_autosign=yesset pgp_sign_as=4FE5C4DDset pgp_timeout=1800

需要注意的是这第一条,需要source一下gpg的配置。这个是从MuttGuide找来的。也是很奇特,经过我实验之后却是可以了。

好了,这下可以通过mutt发送带有签名的邮件,也能检验收到的邮件的签名是否符合。

Hope you enjoy it.

0 0