建立ISPmail-在服务器上建立TLS
本文章为原创翻译文章,转载请保留来源。原文来自 Christoph Haas 网站https://workaround.org/ispmail/wheezy/tlsifying-your-server
互联网已经成为一个邪恶的地方。许多硬件和软件以及技术人员介于你的电脑和你的邮件服务器之间。有些人可能不被信任。另一些人还会监视你。
所以现在的问题是运行任何未加密的网络服务-特别是当它来管理你的服务器和使用你的电子邮件。
在HTTP下考虑任何密码都是浪费。所以在使用PHPMyadmin来发送数据库root用户密码时我们要考虑使APache服务器更安全。
建立TLS并不难。在这里,我们将创建密钥和证书,来使用网页邮件、POP3、IMAP和SMTP的安全。
你必须决定是创建一个证书或者购买一个。以下是比较:
类型 | 优点 | 缺点 | 应用范围 |
自签名 | 免费、快速创建 | 用户将获得一个不受信任的证书的警告信息。 | 为自己和不介意忽视对不明身份的警告消息朋友的私人邮件服务器。 |
用私有的PKI(公钥基础设施)签名 | 免费、你可以创建更多的证书,用户如果安装了根证书的话会直接信任。 | 需要15分钟,需要在所有用户的计算机上安装证书并信任。这个仅有在你可以自动分配证书的企业环境中 | 自己或者朋友使用,切不介意安装你的根证书 |
从StartSSL获得免费的证书 | 免费 用户可能不会得到一个警告。 | 花15分钟的时间。 | 公共邮件服务 |
支付证书 | 用户不会得到一个警告 | 每年花费大概450到1800元。可能是一个冗长的注册过程。你支持证书黑手党。你不以任何方式改善了通信的安全。 | 土豪 |
注:不管你用什么方法,创建密钥都要在自己的服务器上进行。不要信任一个由他人生成的密钥。
你跳过这些步骤,看起来简单,但是对方知道了你的私钥,在理论上可以拦截你的加密流量。
我将会描述如何在以下的部分做的好。只要按照指示选择您的选项。
选项1 自签名
最简单的选择。只要在您的服务器上运行该命令,你有一个有效的通用的证书,在接下来的十年是有效的:
openssl req -new -x509 -days 3650 -nodes -newkey rsa:4096 -out /etc/ssl/certs/mailserver.pem -keyout /etc/ssl/private/mailserver.pem
你将会被问到几个信息。输入任意内容。唯一需要注意的就是“Common Name” ,必须包含完整的主机名,并且在网络上注册过的。
最后确保密钥只能给root用户访问:
chmod go= /etc/ssl/private/mailserver.pem
选项2 用私有PKI签名
这个选择比自签名好一点。不过需要你的用户手动安装你的根证书,并且手动将你的PKI在他们的浏览器和电子邮件程序建立信任关系。
想要知道怎么新建自己的PKI请搜索 openssl 和 CA.pl,在这里就不描述。
一旦PKI新建好了,只需使用以下命令来创建一个证书签名请求(CSR) :
/usr/lib/ssl/misc/CA.pl -newreq
你将会被询问到几个信息。输入你想要的内容。唯一需要注意的就是“Common Name” ,必须包含完整的主机名,并且在网络上注册过的。
然后签署请求(创建证书):
/usr/lib/ssl/misc/CA.pl -sign
你将会在当前目录找到三个文件:
- newreq.pem – 随时可以删除它
- newkey.pem – 移动到 /etc/ssl/private/mailserver.pem
- newcert.pem – 移动到 /etc/ssl/certs/mailserver.pem
最后确保密钥只能给root用户访问:
chmod go= /etc/ssl/private/mailserver.pem
选项3 从StartSSL申请免费的证书
这是几乎总是最佳的选择。它不花你的钱,会给你一个基本可信的证书,大多数浏览器和电子邮件客户端将接受。
创建一个密钥文件:
openssl genrsa -des3 -out /etc/ssl/private/mailserver.pem 4096
根据密钥创建一个证书请求(CSR) 文件
openssl req -new -key /etc/ssl/private/mailserver.pem -out /etc/ssl/certs/mailserver.csr
你将会被询问到几个信息。输入你想要的内容。唯一需要注意的就是“Common Name” ,必须包含完整的主机名,并且在网络上注册过的。
现在去startssl并注册一个账户。
首先使用“验证向导”来验证您的电子邮件地址,然后使用验证向导再次确认您想使用您的电子邮件服务器的域。
然后使用“证书向导”创建“Web Server SSL/TLS certificate” 选择你的邮件地址,粘贴CSR文件的内容到网站。
如果一切顺利的收到您的证书文件的CSR文件的内容。移动文件到 /etc/ssl/certs/mailserver.pem
为了确保下面的Apache配置信息正确,请确保安装了证书链。在StartSSL文档上面有一个实例配置
选项3 支付证书
你确定你要这样做?那就在网上搜索“SSL certificate“ 然后扔大量的钱在任何证书权威机构。
废话少说。创建一个密钥文件:
openssl genrsa -des3 -out /etc/ssl/private/mailserver.pem 4096
根据密钥创建一个证书请求(CSR) 文件
openssl req -new -key /etc/ssl/private/mailserver.pem -out /etc/ssl/certs/mailserver.csr
现在你考虑投资的钱。我建议你创建CSR文件时填的信息要非常小心。必须包含完整的主机名,并且在网络上注册过的。
然后从SSL机构使用CSR文件请求证书。
Web服务器启用HTTPS
现在你有一个有效的密钥和证书,让我们为Web服务器使用HTTPS而不是HTTP。
进入/etc/apache2/sites-available目录并寻找”default-ssl“文件。这是一个启用HTTPS非常好的示例。编辑它并修改为以下内容:
SSLCertificateFile /etc/ssl/certs/mailserver.pem
SSLCertificateKeyFile /etc/ssl/private/mailserver.pem
启用当前SSL配置:
a2ensite default-ssl
同时启用mod_ssl 模块:
a2enmod ssl
重启Web服务器:
service apache2 reload
如果工作正常将会看到一个[OK]。打开浏览器并输入https://YOURSERVER/ 看到一个"It works!" 那就说明成功了。
没用看到则可以运行 apache2ctl configtest 查看问题。
或者查看 /var/log/apache2/error.log 日志文件。
将HTTP转跳到HTTPS
对于一些忘记输入https而输入http的用户,我们可以建立一个重定向。让他们转发到安全的地址上。
编辑/etc/apache2/sites-available/default并在任何位置插入以下内容
Redirect permanent / https://YOUR.MAIL.SERVER/
当然,你必须以完全合格的域名的邮件服务器代替YOUR.MAIL.SERVER
【声明】本文 建立ISPmail-在服务器上建立TLS 为柠之漠然原创文章,转载请注明出自
枫之落叶
并保留本文有效链接:https://blog.shiniv.com/2014/04/ispmail-tlsifying-your-server/ , 转载请保留本声明!