![使用 GNU Mailutils 0.6 IMAP4d 的 TLS](https://linux22.com/image/583630/%E4%BD%BF%E7%94%A8%20GNU%20Mailutils%200.6%20IMAP4d%20%E7%9A%84%20TLS.png)
我已经和古老的 GNU Mailutils 0.6 斗争了好一阵子了。我应该从这个版本设置 IMAP4d 服务以进行 IT 安全演习。我可能不会更新该程序,但我可以按自己喜欢的方式配置它。
到目前为止,我设法让该服务在虚拟机上运行,但所有流量都是以明文形式传输的,包括用户名和密码。当然,这对安全不利。看来 Mailutils 0.6 已经支持 TLS,所以我想为该服务启用它。但我不知道该怎么做。
我发现的该版本的唯一文档是源代码附带的文档(来自这里)。有一章是关于加密的,但帮助不大:
这些选项控制 imap4d 和 pop3d 守护进程中的 TLS/SSL 加密。
--ssl-cert {file}
此选项指定服务器端 SSL 证书的文件名(接受 PEM 格式)。--ssl-key {file}
此选项指定服务器端私钥 SSL 的文件名(接受 PEM 格式)。密钥必须使用 0600 文件权限(u=rw、g=、o=)进行保护,否则 imap4d 或 pop3d 守护进程将拒绝支持 TLS/SSL 加密。--ssl-cafile {file}
此选项指定一个包含受信任 CA 列表(PEM 列表)的文件,以便验证客户端的证书。此选项不是必需的。
至少这告诉我 IMAP4d 确实支持 TLS。但没有说明如何使用它。我在文档中找不到任何其他内容。
我目前所做的:
- 下载源代码,编译并安装
./configure --with-gnutls
make
make install
- 创建了一个配置文件mailutils.rc
(我不确定最后一行):
:mailbox --mail-spool /var/spool/mail
:logging --log-facility mail
imap4d --ssl-cert /root/CA/imap.cert.pem --ssl-key /root/CA/imap.key.pem
- 配置 inetd 以启动 IMAP4d
50123 stream nowait root /usr/local/sbin/imap4d imap4d
它在指定端口上运行,但显然没有使用 TLS。我尝试连接openssl s_client
openssl s_client -connect 192.168.178.29:50123
CONNECTED(00000003)
5769:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:601:
我非常确定,我遗漏了一些东西。这里有谁真的有使用这种过时软件的经验,可以帮我吗?
提前致谢!
答案1
对于最常见的用途,建立安全链接需要服务器向客户端提供一些东西来标识自己。这需要一个用于进行加密数学运算的密钥和一个公开的证书。证书包含有关密钥的信息,因此只有拥有密钥的系统才能向客户端证明它有权使用该证书,并且它还包含有关系统身份的信息,例如主机名。然后,此信息由“另一个”证书签名,该证书是关系中的“颁发者”,该颁发者称为“证书颁发机构”(CA)。他们的证书应该(直接或间接)受到客户端的信任。然后有一堆被广泛接受的 CA,被大多数浏览器和邮件客户端接受。您可以绕过此步骤使用自签名证书进行测试。
(这忽略了无证书操作和一大堆不太常见的模式;上面使用所谓的 X.509 PKI(公钥基础设施)是由远的最常见的。)
因此,您至少需要生成一个(PEM 格式)密钥和证书,并在--ssl-key
和中配置它们--ssl-cert
。如果您需要“客户端证书”,您还可以将一大堆 CA 证书放在一个文件中,从而两个都TLS 会话的双方都必须出示证书。
各种网站都会告诉您如何创建密钥和证书;几年前我写道:http://lopsa.org/SSLIntro