前言

使用邮件进行通信时,邮件一般情况下均为明文,即使自己的客户端与邮箱服务器通信使用TLS加密,但不能保证邮件在邮箱服务器存储时以及对方与邮箱服务器通信时同样以TLS加密。

因此目前有多种邮件签名加密方式,最常见的为OpenPGP和S/MIME

OpenPGP因安全,开源,便捷十分流行,但一个不可忽视的问题就是需要自己构建信任链。

也就是说,在进行公钥交换时需要自行确认对方的身份,最安全的方式是面交公钥并确定密钥指纹。

当然正常生活中对于网友大家更多的是选择在已有的信任链体系下进行公钥交换,例如发布在各大网站上,这些网站均会使用TLS对通信进行加密。

而TLS所依赖的信任链则由全球各大CA证书机构负责,那么,是否有一步到位的方法,直接依赖CA证书机构构建的信任链来进行安全的通信呢?

答案肯定是有,就是本文的主角——S/MIME证书。

当然便捷性和安全性呈负相关,为了便捷性肯定是会降低安全性的,例如国内早期某个CA伪造证书的事情,大家可以自行去搜索,不过目前各大CA还算是值得信任的(单独不信任某个CA也可以自行拉黑)。

申请

S/MIME证书就和网站SSL证书一样,由各大CA证书机构颁发,只是说不像网站SSL证书,免费的一抓一大把,很多S/MIME证书都需要收费,而且价格不便宜,不过今天发现一家免费提供S/MIME证书的机构:Actalis

Actalis免费提供一年有效期的S/MIME证书,验证流程也很简单。

申请链接:https://www.actalis.com/request-s-mime-certificate

申请页面

进入申请页面后首先需要注册账户,注册完成后回到这个页面,填写需要申请的邮箱地址,提交后会向邮箱发送确认链接,点击确认链接完成验证。

此时进入https://www.actalis.com/dashboard可以看到申请的记录,处于Verify状态,等待大约10-30分钟后,变成Active状态时则申请成功

申请页面

点击Download file .p12下载自己的S/MIME证书,证书密码将通过邮件发送至邮箱,密码需要妥善保管(证书文件可以一直下载,密码只会发送一次)。

发送的密码

然后使用支持S/MIME的邮箱客户端就可以发送经过签名或者加密的邮件了。

从安全性考虑,我选择将证书导入我的Canokey中,如果有yubikey也可以导入yubikey中

后记

不知道thunderbird抽什么风,就是死活用不了Canokey里的S/MIME证书,将证书直接导入thunderbird才能正常发邮件,之前OpenPGP也是这个毛病,用不了外置智能卡。。。

补充

Canokey的问题折腾一个下午没折腾好,结果吃个饭,洗个澡,重新试了一下发现居然又可以正常用了。。。

嗯,就很magic