如何使用CloudFlare DNS01 Challenge生成LetsEncrypt SSL证书并在Synology NAS上使用

磁盘站管理器v7 (DSM 7)是Synology NAS设备的操作系统。您可以从DSM 7 web界面为Synology NAS配置Let 's Encrypt SSL证书。默认情况下,Synology DSM 7使用HTTP-01挑战来验证域(您希望用于Synology NAS)的所有权,并为该域颁发SSL证书。但是HTTP-01的挑战是行不通的,除非你有一个公共IP地址,并且你的计算机可以从互联网访问。因此,如果您想在您的家庭网络或专用网络中使用Let 's Encrypt SSL证书,则必须使用DNS-01挑战。当使用DNS-01挑战时,Let 's Encrypt使用域的DNS服务器验证域的所有权。所以,它也适用于私人网络。遗憾的是,Synology DSM 7 web界面没有提供任何使用DNS-01挑战获取Let 's Encrypt SSL证书的方法。

幸运的是,“acme.sh”程序可以安装在Synology NAS上,并用于使用DNS-01挑战生成和更新Let 's Encrypt SSL证书。

在本文中,我们将向您展示以下内容:

  • 如何在Synology NAS上安装“sh”
  • 如何使用" acme.sh "为您在Synology NAS上使用的域名生成Let 's Encrypt SSL证书(通过DNS-01挑战)
  • 如何在Synology NAS上安装“acme.sh”生成的Let 's Encrypt SSL证书
  • 如何配置Synology NAS的DSM 7操作系统以使用生成的Let 's Encrypt SSL证书
  • 如何配置Synology NAS以自动更新使用“acme.sh”生成的Let 's Encrypt SSL证书

注意:在本文中,我们将使用CloudFlare DNS服务器进行演示。您也可以使用acme.sh支持的其他DNS服务。你所要做的就是做必要的调整。

内容主题:

  1. 在Synology NAS上创建Certadmin用户
  2. 为LetsEncrypt DNS-01 Challenge配置CloudFlare DNS服务器
  3. 配置LetsEncrypt DNS-01 Challenge的其他DNS服务
  4. 通过SSH方式访问Synology NAS终端
  5. 正在Synology NAS上下载Acme.sh
  6. 在Synology NAS上安装Acme.sh
  7. 使用Acme.sh为您的Synology NAS生成Let 's Encrypt SSL证书
  8. 使用Acme.sh在Synology NAS上安装Let 's Encrypt SSL证书
  9. 在Synology NAS上设置让我们加密SSL证书为默认值
  10. 使用Acme.sh配置Synology NAS自动更新“让我们加密SSL证书”
  11. 结论
  12. 参考文献。

在Synology NAS上创建Certadmin用户

首先,您应该在Synology NAS上创建一个新的管理用户,以生成和续签Let 's Encrypt SSL证书。

要在Synology NAS上创建一个新的管理用户,请从DSM 7 web界面单击控制面板[1]>用户和组[2]。

点击“用户”选项卡中的“创建”。

输入“certadmin”作为用户名[1],用户的可选简短描述[2],用户登录密码[3],然后点击“下一步”[4]。

要创建管理员用户,从列表[1]中勾选“administrators”组,然后单击“Next”[2]。

点击“下一步”。

点击“下一步”。

点击“下一步”。

点击“下一步”。

点击“完成”。

现在应该在Synology NAS上创建了certadmin用户。

为Let 's Encrypt DNS-01挑战配置CloudFlare DNS服务器

要在Let 's Encrypt DNS-01挑战中使用CloudFlare DNS服务器,您需要生成CloudFlare DNS令牌。您可以从CloudFlare仪表板生成CloudFlare DNS服务器令牌。有关更多信息,请阅读本文。

为Let 's Encrypt DNS-01挑战配置其他DNS服务

“Acme.sh”支持其他DNS服务。如果你不想使用CloudFlare DNS,你可以使用任何一个“acme.sh”支持的DNS服务。对于不同的DNS服务,配置略有不同。有关更多信息,请查看“acme.sh”DNS API指南。

通过SSH方式访问Synology NAS终端

要在Synology NAS上安装“acme.sh”并生成和安装Let 's Encrypt SSL证书,您需要访问Synology NAS的终端。有关在Synology NAS上启用SSH访问和访问Synology NAS终端的更多信息,请阅读本文。

在Synology NAS上启用SSH访问后,在计算机上打开终端应用程序并运行以下命令:

$ SSH certadmin@

系统将要求您输入certadmin用户的登录密码。输入Synology NAS的certadmin用户的登录密码,然后按“”。您应该以certadmin用户登录到Synology NAS。

正在Synology NAS上下载Acme.sh

下载最新版本的“acme.sh”客户端。

$ wget -O /tmp/acme.sh.zip https://github.com/acmesh-official/acme.sh/archive/master.zip

最新版本的“acme.sh”客户端归档文件“acme.sh.zip”应该在Synology NAS的“/tmp”目录下下载。

在Synology NAS上安装Acme.sh

解压Synology NAS的“/usr/local/share”目录下的“/tmp/acme.sh.zip”文件,执行如下命令,输入certadmin用户的登录密码,并按提示输入密码。“/tmp/acme.sh.zip”压缩包解压到“/usr/local/share/acme.sh-master”目录下。

$ sudo 7z x -o /usr/local/share /tmp/acme.sh.zip

为简单起见,使用以下命令将“acme.sh-master”目录重命名为“acme.sh”。

$ sudo mv -v /usr/local/share/acme.sh-master /usr/local/share/acme.sh

使用实例设置“/usr/local/share/acme.sh”目录及其内容为certadmin用户所有。

$ sudo chown -Rfv certadmin /usr/local/share/acme.sh

使用Acme.sh为您的Synology NAS生成Let 's Encrypt SSL证书

要为您在Synology NAS上使用的域名生成Let 's Encrypt SSL证书,请导航到“/usr/local/share/acme.sh”目录,如下所示:

$ CD /usr/local/share/acme.sh

现在,您需要导出所需的DNS API令牌环境变量。我们使用CloudFlare DNS管理我们在Synology NAS上使用的域名。所以,对我们来说,我们所要做的就是用CloudFlare DNS API令牌的值导出CF_Token环境变量。如果您正在使用其他DNS服务,请检查“acme.sh”DNS API文档中需要导出的变量,以便“acme.sh”与DNS服务一起工作。

$ export CF_Token=""

此外,导出所需的Synology环境变量,以便“acme.sh”可以在Synology NAS上安装生成的SSL证书。

$ export SYNO_Username="certadmin"

$ export SYNO_Password="Your_certadmin_login_Password"

$ export SYNO_Certificate="让我们加密"

$ export SYNO_Create=1

使用CloudFlare DNS插件(-dns dns_cf)为“*.nodekite.com”(通配符)域名生成Let 's Encrypt SSL证书,执行如下命令:

$ ./acme.sh——server letsencrypt——issue——dns dns_cf——home $PWD -d "*.nodekite.com"

注意:如果您正在使用其他DNS服务,您需要相应地更改上述命令中的DNS插件(-dns)。有关更多信息,请查看" acme.sh " DNS API文档。

正在生成Let 's Encrypt SSL证书。这需要一段时间才能完成。

此时,应该生成Let 's Encrypt SSL证书。

使用Acme.sh在Synology NAS上安装Let 's Encrypt SSL证书

一旦为Synology NAS的域名(在本例中为*.nodekite.com)生成Let 's Encrypt SSL证书,您可以使用以下命令将其安装在Synology NAS上:

$ ./acme.sh -d "*.nodekite.com"——deploy——deploy-hook synology_dsm——home $PWD

如果您为certadmin用户启用了双因素身份验证,您将收到一个OTP代码。你必须输入联机码,然后按。

如果您没有为certadmin用户启用双因素身份验证,请将其保留为空并按下。

出版社。

生成的Let 's Encrypt SSL证书应该安装在Synology NAS上。

一旦在Synology NAS上安装了Let 's Encrypt SSL证书,它将显示在Synology NAS的DSM 7 web界面的控制面板>安全>证书部分。

在Synology NAS上设置让我们加密SSL证书为默认值

要管理Synology NAS的SSL证书,请从Synology NAS的DSM 7 web界面导航到控制面板>安全>证书部分。

要将新安装的Let 's Encrypt SSL证书设置为默认值,以便Synology NAS上新安装的web服务将默认使用它,请选择Let 's Encrypt SSL证书并单击“操作>编辑”。

勾选“设置为默认证书”[1],点击“确定”[2]。

应该将Let 's Encrypt SSL证书设置为Synology NAS的默认证书。

要配置Synology NAS的现有web服务以使用Let 's Encrypt SSL证书,请单击“设置”。

如您所见,所有web服务都在使用Synology自签名SSL证书。

要更改web服务的SSL证书,请单击右侧相应的下拉菜单。

然后,从下拉菜单中选择要用于web服务的Let 's Encrypt SSL证书。

同样,为Synology NAS的所有已安装的web服务选择Let 's Encrypt SSL证书,然后单击“OK”。

点击“是”。

这些变化正在被应用。这需要几秒钟才能完成。

一旦将Let 's Encrypt SSL证书应用于Synology NAS的所有web服务,刷新网页,您的DSM 7 web界面应该使用Let 's Encrypt SSL证书。

使用Acme.sh配置Synology NAS自动更新Let 's Encrypt SSL证书

要将Synology NAS配置为自动更新Let 's Encrypt SSL证书,请从DSM 7 web界面导航到控制面板>任务调度程序。

在任务计划程序中,单击“创建>计划任务>用户定义脚本”。

在“常规”选项卡中,在“任务”部分[1]中输入“更新SSL证书”,并从“用户”下拉菜单[2]中选择“certadmin”。

在“Schedule”选项卡中,选择“Run on next date”[1],并在“Repeat”下拉菜单中选择“Repeat monthly”[2]。

导航到“任务设置”选项卡,在“用户自定义脚本”部分[1]中输入以下命令,然后点击“确定”[2]。

-renew -server letsencrypt -d " *.nodekite.com " -home /usr/local/share/acme.sh

应该创建一个新任务。“更新SSL证书”任务将每月运行一次,并确保让我们加密SSL证书在到期之前更新。

结论

在本文中,我们向您展示了如何安装和使用“ACME .sh”ACME客户机,以便通过Synology NAS上的DNS-01挑战生成Let 's Encrypt SSL证书。我们还向您展示了如何在Synology NAS上安装生成的Let’s Encrypt SSL证书,并配置Synology NAS的web服务以使用它。最后,我们向您展示了如何在Synology NAS上配置一个计划任务,以便在Let’s Encrypt SSL证书到期之前自动更新它。

引用:

  • 与“让加密”和“DNS挑战”的协同DSM 7
  • 使用DNS-01挑战自动更新Synology NAS上的加密证书
  • acmesh-official/ ACME .sh:一个纯Unix shell脚本,实现ACME客户端协议