通过免费让我们加密SSL证书来保护ISPConfig 3.1

本教程将介绍如何为ISPconfig接口(端口8080),电子邮件系统(Postfi ...)创建和配置免费的Lets加密SSL证书。

通过免费让我们加密SSL证书来保护ISPConfig 3.1

作者: ahrasis

本教程展示了如何创建和配置免费让我们为ISPconfig接口(端口8080),电子邮件系统(Postfix和Dovecot / Courier),FTP服务器(pure-ftpd)和Monit加密SSL证书。 本教程中的命令已在Ubuntu 16.04上测试过,它们也应该可以在Debian上运行。 某些修改可能需要使其在CentOS上运行。

论坛主题提供本指南的帮助。

使用ISPConfig服务器主机名FQDN创建网站

通过站点>网站>添加新网站,在ISPConfig面板中为您的服务器创建一个站点。 记得! 这是您的服务器网站,因此它必须包含您的服务器完全限定的域名(FQDN)。 我将在本指南中将其称为`hostname -f`。

hostname -f

希望它不会对你的服务器做任何改变。

在线访问ISPConfig网站

检查您的服务器站点是否已准备就绪,并且可以在线访问,因为Let's Encrypt需要在为您的服务器站点发布SSL密钥,证书和链文件之前验证您的网站是否可访问。 您还必须创建其DNS区域并允许它正确传播,因为Let's Encrypt也需要进行验证。

启用S​​SL对于ISPConfig 3控制面板(端口8080)

如果您在ISPConfig设置期间尚未启用SSL,即其端口8080上的控制面板,请在终端中键入ispconfig_update.sh并在SSL中选择yes。 我们不需要这是一个合适的关键,我们也不想保留它,但我们想要更快地工作,因此我们可以简单地进入它的所有领域。 完成此操作后,应该已经为您的ISPConfig启用了自签名SSL。

检查SSL对于ISPConfig 3控制面板(端口8080)

请检查您的浏览器,以在端口8080上打开ISPConfig控制面板进行确认。请注意,在此阶段您可能会收到一些警告,因为创建的SSL文件是自签名的,但浏览器会确认您的ISPConfig启用了SSL或其他功能。

让我们加密SSL以确保ISPConfig网站的安全

如果完成上述操作,请返回到ISPConfig面板>站点>网站>网站名称 ,然后单击SSL让我们加密检查按钮并保存 - 以创建让我们加密SSL文件并为您的服务器站点启用它们。 如果你的服务器站点成功,现在应该使用这个让我们加密SSL文件,但不是你的ISPConfig 8080页面。 如果不成功,您将无法继续前进,因此请检查其日志文件以获取线索。

更改ISPConfig 3控制面板(端口8080)

如果LE SSL已经正常工作,则转到您的服务器终端,通过sudo su进入root并使用以下命令备份并使用Let's Encrypt SSL文件替换已创建的自签名SSL文件。

cd /usr/local/ispconfig/interface/ssl/
mv ispserver.crt ispserver.crt-$(date +"%y%m%d%H%M%S").bak
mv ispserver.key ispserver.key-$(date +"%y%m%d%H%M%S").bak
mv ispserver.pem ispserver.pem-$(date +"%y%m%d%H%M%S").bak
ln -s /etc/letsencrypt/live/$(hostname -f)/fullchain.pem ispserver.crt
ln -s /etc/letsencrypt/live/$(hostname -f)/privkey.pem ispserver.key
cat ispserver.{key,crt} > ispserver.pem
chmod 600 ispserver.pem

  • 如果您之前尚未创建ispserver.pem,则可以忽略旨在将现有命名(如果有)重命名为备份的第三行。
  • 注意我们正在使用让我们加密活动文件夹而不是归档文件夹。
  • 还要注意最后一行,其中ispserver.pem是通过组合文件创建的,因此,它不会通过让我们加密自动更新,而不像其他文件那样我们只是将它们链接起来,因此,我们将在本指南的最后部分处理这一点。
  • 还请注意,您输入`hostname -f`或server1.example.com,因为结果是相同的,因为`hostname -f`是server1.example.com。

使用同样的方式让我们为其他主要服务加密SSL证书

作为附加提示,基于保护您的ISPConfig 3安装,您可能希望使用符号链接到ispserver.key或.crt或.pem,而不是直接将您的postfix,dovecot,courier,pure-FTPd和monit指向Let's Encrypt SSL文件。 对于dovecot,如果它已经在使用postfix SSL文件,那么忽略它是安全的。 详细你只需要做以下事情:

一个。 对于Postfix

cd /etc/postfix/
mv smtpd.cert smtpd.cert-$(date +"%y%m%d%H%M%S").bak
mv smtpd.key smtpd.key-$(date +"%y%m%d%H%M%S").bak
ln -s /usr/local/ispconfig/interface/ssl/ispserver.crt smtpd.cert
ln -s /usr/local/ispconfig/interface/ssl/ispserver.key smtpd.key
service postfix restart
service dovecot restart


湾 对于鸽友:(*注意,这不应该与Express一起存在)

使用nano /etc/dovecot/dovecot.conf检查这段代码是否存在

[...]
ssl_cert = </etc/postfix/smtpd.cert
ssl_key = </etc/postfix/smtpd.key
[...]

如果它们存在,则保留原样。 否则,修复它们。 无论如何,运行服务dovecot restart已经在上面讨论过了。

C。 对于Express员:(*注意,这不应该与鸽舍一起存在)

cd /etc/courier/
mv imapd.pem imapd.pem-$(date +"%y%m%d%H%M%S").bak
mv pop3d.pem pop3d.pem-$(date +"%y%m%d%H%M%S").bak
ln -s /usr/local/ispconfig/interface/ssl/ispserver.pem imapd.pem
ln -s /usr/local/ispconfig/interface/ssl/ispserver.pem pop3d.pem
service courier-imap-ssl stop
service courier-imap-ssl start
service courier-pop-ssl stop
service courier-pop-ssl start

d。 对于纯FTPd:

cd / etc / ssl / private /
mv pure-ftpd.pem pure-ftpd.pem - $(date +“%y%m%d%H%M%S”)。bak
ln -s /usr/local/ispconfig/interface/ssl/ispserver.pem pure-ftpd.pem
chmod 600 pure-ftpd.pem
service pure-ftpd-mysql restart

即 对于monit :(如果您已将它安装在您的服务器中)

nano /etc/monit/monitrc

将以上符号链接添加到我们在此为pure-ftpd创建的ispserver.pem中:

[...]
set httpd port 2812 and
SSL ENABLE
PEMFILE /etc/ssl/private/pure-ftpd.pem
allow admin:'secretpassword'
[...]

并重新启动监控:

service monit restart


为您的ISPConfig Pem文件创建自动更新脚本(ispserver.pem)

在最后一个步骤中,我至今还没有在任何指南中找到这个步骤,它是ispserver.pem的自动更新,如前所述。 目前,必须在Let's Encrypt自动更新服务器SSL文件后手动更改。 为避免忽略这一点,您可能需要按照相应的incron教程中的建议安装incron,并创建一个脚本来自动更新您的ispserver.pem文件,如下所示:

通过终端命令,安装incron,然后创建脚本文件并使用nano进行编辑:

apt install -y incron
nano /etc/init.d/le_ispc_pem.sh

将其添加到le_ispc_pem.sh中:

#!/bin/sh
### BEGIN INIT INFO
# Provides: LE ISPSERVER.PEM AUTO UPDATER
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: LE ISPSERVER.PEM AUTO UPDATER
# Description: Update ispserver.pem automatically after ISPC LE SSL certs are renewed.
### END INIT INFO
cd /usr/local/ispconfig/interface/ssl/
mv ispserver.pem ispserver.pem-$(date +"%y%m%d%H%M%S").bak
cat ispserver.{key,crt} > ispserver.pem
chmod 600 ispserver.pem
chmod 600 /etc/ssl/private/pure-ftpd.pem
service pure-ftpd-mysql restart
service monit restart
service postfix restart
service dovecot restart
service nginx restart
  • 注意有些人不安装监视器,所以他们可以安全地移除它。 请相应地调整上述脚本。
  • 对于多服务器设置,请参考后面的#203并在此处添加给定的scp代码以自动执行将来的更新。

然后,我们使其成为可执行文件,将root添加为incrontab的允许用户,然后编辑incrontab文件:

chmod +x /etc/init.d/le_ispc_pem.sh
echo "root" >> /etc/incron.allow
incrontab -e


在它的incrontab中添加这一行:

/etc/letsencrypt/archive/$(hostname -f)/ IN_MODIFY ./etc/init.d/le_ispc_pem.sh

重新启动您的服务

我想这就是为了让我们加密来保护您的服务器。 之后您可能需要重新启动Web服务器。

service nginx restart

请记住:如果您使用的是Apache,请相应地将nginx更改为apache2。

LE4ISPC

作为替代方案,您可能需要使用为此目的而创建的LE4ISPC脚本 ,该脚本既支持来自ISPConfig的nginx和apache2,也支持除monit以外的pure-ftpd。 在使用之前,您应该已经完成​​了上述步骤(1-5)并具有:

1.通过ISPConfig为您的服务器创建网站;
2.网站可以在线访问;
3.启用ISPConfig SSL(通过安装或更新);
4. LE SSL已成功启用该网站。