群辉NAS利用acme.sh无80口自动化部署证书

一、安装acme.sh程序

首先使用FinalShell或其它工具登陆群晖SSH端口,步骤是:

输入admin及密码

输入sudo -i

输入root及密码

202203231154453090334

输入以下代码安装acme.sh

wget https://github.com/Neilpang/acme.sh/archive/master.tar.gz
 tar xvf master.tar.gz 
cd acme.sh-master/
 chmod a+x acme.sh

解压后需将其安全到我们能容易查看的目录内,输入代码:

./acme.sh --install --nocron --home "/volume1/docker/cert/challenges/acme.sh"

设置别名(创建 一个 bash 的 alias,方便使用):

alias acme.sh=/volume1/docker/cert/challenges/acme.sh/acme.sh

测试别名是否应用成功

acme.sh --version

202203231212519945696

返回上述信息,表示设置成功。

注册acme账号,执行脚本进行账号申请

acme.sh  --register-account  -m my@example.com --server zerossl

202203231236047854474

注意:邮箱(my@example.com)记得改成自己的

二、配置阿里云、腾迅云或Cloudflare服务ID和密码,本文以Cloudflare为例,其他服务商自行实践。

阿里云

推荐使用子账户,并赋予子账户 DNS 权限,以确保安全性.

登陆阿里云控制台 – 访问控制 RAM – 用户管理

新建用户并勾选为该用户自动生成AccessKey,复制保存好生成的AccessKey信息。

授权该用户,搜索DNS,并将AliyunDNSFullAccess移动至右侧确定。

根据官方dnsapi获取阿里云的API格式为:

export Ali_Key="LTAI4Fd8J9qs4fxxxxxxxxxx" 
export Ali_Secret="Xp3Z7NDOW0CJcPLKoUwqxxxxxxxxxx"

腾讯云

腾讯云的域名由dnspod.cn管理,登陆管理控制台,右上角选择密钥管理,创建密钥并复制保存好生成的IDToken

根据官方dnsapi获取DNSPod.cnAPI格式为:

export DP_Id="124xxx" 
export DP_Key="54ddaa41245837600ce713xxxxxxxxxx"

Cloudflare

Cloudflare 的 API 分为 global api key 全局 API 和创建 new api token ,网上各种教程都是使用全局 API。为确保安全,推荐创建 new api token 来使用。

登陆 Cloudflare ,我的个人资料>API令牌>创建令牌>开始创建,设置如下

202203231245006572842

设置完成以后,点击创建令牌。

202203231252597856471

使用网站给出的代码测试令牌,点击Copy记录下你的令牌(API token)

curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \   
   -H "Authorization: Bearer 你的令牌" \     
 -H "Content-Type:application/json"

202203231258299910267

返回如上信息表示设置正确。

进入随便一个域名管理界面,概述页面的最右下角有你的帐户ID(Account ID),复制并记录。

202203231347072291033

根据官方dnsapi获取CloudFlareUsing the new cloudflare api token格式为:

export CF_Token="Latn0w4-*********************k4PtIDVVG" 
export CF_Account_ID="a106***************************f26a"

置自动更新配置

1、配置好后,请选用相应的代码进行生成证书,我选用的是阿里云,所以代码是:

acme.sh --issue --dns dns_cf -d example.com -d *.example.com

注意:多域名可以在命令后面加入 -d xxx.com 等等,需要多少个就可增加多少,但是这些域名都需在你Cloudflare帐户下。

202203231743491452998

等几分钟,返回如上信息,表示生成证书成功,一般如果配置成功的话,可以直接产生相应的证书,文件夹是以你的域名命名的,例如”example.com”,里面有7个文件,分别是证书和系统文件,如下图已经在/volume1/docker/cert/challenges/acme.sh/example.com目录中生成了7个文件。

2、配置证书

在NAS文件管理中找到/volume1/docker/cert/challenges/acme.sh/example.com,将example.com.key、fullchain.cer以及ca.cer三个文件,下载到本地。

ca.cer是中间证书,可以不下载,也可不下载,随意。

202203231740454429662

通过SSH输入以下命令,查看证书的配置目录

cd /usr/syno/etc/certificate/_archive/
 ls

202203231750133153088

记住/usr/syno/etc/certificate/_archive目录下的证书目录。

通过NAS控制面板>安全性>证书>新增,导入证书,导入刚下载的example.com.key和fullchain.cer(以及ca.cer)到NAS服务器中。

202203231753398680528

导入证书完成后,再到/usr/syno/etc/certificate/_archive目录中看看新增的证书目录名称,我是之前已经配置过的,我的新证书配置目录是JQByw2,记住这个文件夹名称,下面需要用到。

这时你就可以在NAS控制面板>安全性>证书中看到您刚才配置的证书。

202203231816175055734

设置成默认证书,点击设置,将系统默认选择为刚配置的证书即可。

3、配置自动更新证书

acme.sh --install-cert -d example.com --certpath /usr/syno/etc/certificate/_archive/JQByw2/cert.pem --keypath /usr/syno/etc/certificate/_archive/JQByw2/privkey.pem --fullchainpath /usr/syno/etc/certificate/_archive/JQByw2/fullchain.pem --capath /usr/syno/etc/certificate/_archive/JQByw2/chain.pem --reloadcmd "nginx -s reload"

配置完成,系统会重载Nginx。

添加计划任务,实现自动更新

控制面板>计划任务>新增>计划的任务>用户自定义脚本,用户帐号选择root,勾选已启动。

 

202203231823155209471

任务设置选项的用户定义的脚本输入:

cd /volume1/docker/cert/challenges/acme.sh 
./acme.sh --home /volume1/docker/cert/challenges/acme.sh --renew --force -d example.com -d *.example.com

202203240110245476582

因为证书的有效期为90天,所以我们在计划选项中选择每月指定日期运行一次脚本,来更新证书,我设置的是每月20日0点运行。这样就不会出现证书过期的情况。

202203231832269582437

经过测试,更新后会自动运行配置证书命令,如果不放心,可以再添加一个配置证书的计划任务。过程跟上一个脚本配置基本一样,只是脚本使用:

cd /volume1/docker/cert/challenges/acme.sh
./acme.sh --home /volume1/docker/cert/challenges/acme.sh --install-cert -d example.com --certpath /usr/syno/etc/certificate/_archive/JQByw2/cert.pem \--keypath /usr/syno/etc/certificate/_archive/JQByw2/privkey.pem --fullchainpath /usr/syno/etc/certificate/_archive/JQByw2/fullchain.pem --capath /usr/syno/etc/certificate/_archive/JQByw2/chain.pem --reloadcmd "nginx -s reload"

 

202203240111297860542

为保险起见,这个脚本设置运行时间应该比上一个晚半小时到一个小时,因为生成证书会需要几分钟,域名越多,生成证书需要的时间越多。

202203231842177496851

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享