如何在Ruby on Rails中发送和接收加密电子邮件?

7

我有一个Rails应用程序,可以在某些事件触发时触发电子邮件。这些电子邮件发送到另一家公司,当回复时,该公司将向电子邮件添加一些附加数据。我已经理解并完成了这个工作,我正在解析回复并提取数据,它的工作很好。

现在我被要求加密电子邮件。

有没有人有经验/想法来解决这个问题?

我无法保证第三方将使用哪个电子邮件客户端,因此我需要一种能够在许多电子邮件客户端上通用的解决方案。加密必须由我的应用程序在发送电子邮件时和客户端应用程序(Outlook、Thunderbird、Entourage等)在回复时进行。然后,我需要接收加密电子邮件,对其进行解密并解析以提取我需要的新信息。

有人可以指导我使用插件/文档来帮助我实现这一点吗?

2个回答

3
如果对方没有使用你的应用程序,您应该使用S/MIME或PGP。
大多数桌面电子邮件客户端都支持S/MIME,而PGP通常作为插件提供(例如,对于Thunderbird有Enigmail,对于Apple Mail有GPGMail等)。
此外,S/MIME需要证书,您可以根据需要自己创建或从证书颁发机构(例如VerisignThawte)购买。
我相信Ruby有S/MIME和PGP库,但是快速搜索并没有为我揭示“唯一真正的库”。但是,您始终可以让OpenSSL(用于S/MIME)或GPG为您完成繁重的工作。

1

我认为Güder的回答非常好,但请记住,这一切都需要用户已经安装了类似于GPG并且有相关密钥可用的东西。这个繁琐的设置过程是让电子邮件加密更广泛的障碍的95%左右。

您确定委托此项目的人员明白这不像在代码中切换开关以发送加密电子邮件那么简单吗?

一个选项是在程序的安装过程中加入依赖于(并包括)GPG的密钥管理例程。然后用户可以选择一个非常困难的密码(确保对其进行检查,以至少是字母数字等),从中生成公钥,并上传到流行的密钥服务器。

生成的密钥可以用于程序生成的电子邮件,最重要的是,密钥将对每个用户都是唯一的。然后,您可以定期外部调用用户操作系统上的默认电子邮件客户端来打开电子邮件。

为了确保电子邮件被加密打开,我会检查环境并获取默认的电子邮件客户端,然后使用必要的标志从您的程序发送电子邮件,以使生成的电子邮件被加密。这意味着对于Thunderbird的Enigmail和Apple的Mail等不同的电子邮件客户端,情况会有所不同。

但不要忘记 OpenSSL,当然……


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接