💻群晖DSM6.1使用acme.sh安装并自动更新Let's免费证书

Posted by Se7enMuting on August 23, 2018

Chinamainland 家宽的80/443端口是不开放的,所以群晖自带的证书更新无法使用,下面介绍用acme.sh的方法。此文章在黑群晖6.1.7上测试成功。

先SSH进系统

1.安装acme.sh

先在 volume5 下新建文件夹@acme,然后下面命令安装:

1
2
3
4
wget https://github.com/Neilpang/acme.sh/archive/master.tar.gz
tar xvf master.tar.gz
cd acme.sh-master/
./acme.sh –install –nocron –home /volume5/@acme/acme.sh/

2.用dnspod API生成Let’s证书

注意:不要用ecc证书,重启证书会失效,FTPS也不支持。

安装命令如下:

1
2
3
export DP_Id="xxxxx"
export DP_Key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
/volume5/@acme/acme.sh/acme.sh –home "/volume5/@acme" –issue –dns dns_dp -d demo.com –dnssleep 30

到此,去群晖的web里,控制面板-安全性-证书里,把默认的证书先替换成acme.sh生成的证书(/volume5/@acme/demo.com内),见下图,主要是为了防止配置信息丢失。

img01

现在证书已经装好了,每次安按照上面的方式手动更新证书也可以。

3.全自动更新证书

输入下面一条命令(g3i0CB是默认证书所在的文件夹,和DEFAULT文件里内容一致,自行修改。INFO文件是配置信息,不要乱改。demo.com是你自己的域名):

1
/volume5/@acme/acme.sh/acme.sh –home "/volume5/@acme" –install-cert -d demo.com –fullchain-file /usr/syno/etc/certificate/_archive/g3i0CB/fullchain.pem –key-file /usr/syno/etc/certificate/_archive/g3i0CB/privkey.pem –cert-file /usr/syno/etc/certificate/_archive/g3i0CB/cert.pem –ca-file /usr/syno/etc/certificate/_archive/g3i0CB/chain.pem –reloadcmd "rsync -avzh /usr/syno/etc/certificate/_archive/g3i0CB/ /usr/syno/etc/certificate/system/default/ && rsync -avzh /usr/syno/etc/certificate/_archive/g3i0CB/ /usr/syno/etc/certificate/smbftpd/ftpd && /usr/syno/etc/rc.sysv/nginx.sh reload"

建个.sh脚本,添加到计划任务里,每天自动运行一次:

1
/volume5/@myshell/acme_update.sh >> /volume5/@myshell/log.txt 2>&1

acme_update.sh脚本内容:

1
/volume5/@acme/acme.sh/acme.sh –home "/volume5/@acme" –renew –dns dns_dp -d demo.com