文章插图
通过理解安全证书来保护你的 linux 邮件服务 。
- 来源:https://linux.cn/article-12217-1.html
- 作者:Marc Skinner
- 译者:Acceleratorrrr
通常,不管你是通过 简单邮件传输协议(Simple Mail Transport Protocol)(SMTP)或者 互联网消息访问协议(Internet Message Access Protocol)(IMAP)或 邮局协议(Post office Protocol)(POP)发送或者接受邮件,邮件服务默认都是以无保护的明文来传输数据 。近来随着数据加密成为越来越多程序的共识,你需要 安全套接层(Secure Sockets Layer)/ 传输层安全性(Transport Layer Security)(SSL/TLS)的安全证书来保护你的邮件服务 。
首先,快速回顾一下邮件服务和协议的基本流程 。邮件通过 SMTP 从 TCP 端口 25 发出 。这个协议依靠 DNS 邮件交换服务器(Mail eXchanger)(MX)记录的地址信息来传输邮件 。当邮件到达邮件服务器后,可以被以下两种服务中的任意一种检索:使用 TCP 端口 143 的 IMAP,或者使用 TCP 端口 110 的 POP3(邮局协议第 3 版) 。然而,以上服务都默认使用明文传输邮件和认证信息 。这非常的不安全!
为了保护电子邮件数据和认证,这些服务都增加了一个安全功能,使它们可以利用 SSL/TLS 证书对数据流和通讯进行加密封装 。SSL/TLS 是如何加密数据的细节不在本文讨论范围,有兴趣的话可以阅读 Bryant Son 关于互联网安全的文章 了解更多细节 。概括的说,SSL/TLS 加密是一种基于公钥和私钥的算法 。
通过加入这些安全功能后,这些服务将监听在新的 TCP 端口:
文章插图
生成 SSL/TLS 证书OpenSSL 可以生成免费的 SSL/TLS 证书,或者你也可以从公共 证书颁发机构(Certificate Authoritie)(CA)购买 。过去,生成自签发证书十分简单而且通用,但是由于安全被日益重视,大部分的邮件客户端是不信任自签发证书的,除非手动设置 。
如果你只是自己使用或者做做测试,那就使用自签发证书省点钱吧 。但是如果很多人或者客户也需要使用的话,那最好还是从受信任的证书颁发机构购买 。
不管是哪种情况,开始请求新证书的过程是使用 Linux 系统上的 OpenSSL 工具来创建一个 证书签发请求(Certificate Signing Request)</ruby(CSR):
$ openssl req -new -newkey rsa:2048 -nodes -keyout mail.mydomain.key -out mail.mydomain.csr
这个命令会为你想保护的服务同时生成一个新的 CSR 文件和一个私匙 。它会询问你一些证书相关的问题,如:位置、服务器的 完全合规域名(Fully Qualified Domain Name)(FQDN)、邮件联系信息等等 。当你输入完这些信息后,私钥和 CSR 文件就生成完毕了 。如果你想生成自签发证书
如果你想要生成自签发证书的话,在运行以上 CSR 命令之前,你必须先创建一个 自己的根 CA。你可以通过以下方法创建自己的根 CA 。
$ openssl genrsa -des3 -out myCA.key 2048
命令行会提示你输入一个密码 。请输入一个复杂点的密码而且不要弄丢了,因为这将会是根 CA 私钥的密码,正如其名称所示,它是你的证书中所有信任关系的根 。接下来,生成根 CA 证书:
$ openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem
在回答完一些问题后,你就拥有一个有效期为 5 年的根 CA 证书了 。用之前生成的 CSR 文件,你可以请求生成一个新证书,并由您刚才创建的根 CA 签名 。
$ openssl x509 -req -in mail.mydomain.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out mail.mydomain.pem -days 1825 -sha256
输入你的根 CA 私钥的密码来创建和签署证书 。现在你有了配置电子邮件服务以增强安全性所需的两个文件:私匙文件 mail.mydomain.key 和公开证书文件 mail.mydomain.pem 。
如果你愿意购买证书
如果你愿意从机构购买证书,则需要上传 CSR 文件到证书颁发机构的系统中,它将会被用于生成 SSL/TLS 证书 。证书可作为文件下载,比如 mail.mydomain.pem 。很多 SSL 机构也需要你下载一个中间证书 。如果是这样的话,你必须把这个两个证书合并成一个,这样电子邮件服务就可以将这两个证书结合起来处理 。可以使用以下命令把你的证书和第三方中间证书合并在一起:
$ cat mail.mydomain.pem gd_bundle-g2-g1.crt > mail.mydomain.pem
值得一提的是 .pem 文件后缀代表 隐私增强邮件(Privacy-Enhanced Mail) 。
推荐阅读
- Redis如何清除过期key? 一篇文章带你走近源码!
- 如何开一个代购网店 怎样开淘宝店铺代卖
- 干玫瑰花如何喝,茉莉花茶如何喝
- vscode如何优雅的拥抱eslint
- 淘宝联盟怎么推广赚钱技巧 淘宝联盟如何做推广
- 网上如何找到更多的高清图片素材?这6个免版权图库收藏好
- 如何运营10个500人大群?
- 怎样开农村淘宝店 如何开农村淘宝网店
- 粉玫瑰花茶如何泡茶喝,孕妇能喝玫瑰花茶吗
- 华美月饼档次如何?