https://github.com/acmesh-official/acme.sh/wiki/Synology-NAS-Guide Let’s Encrypt和SSL是干什么的自己搜索去 群晖6.0以后集成了Let’s Encrypt证书签发,但需要开放80端口来进行认证,对于天朝人个网络只能呵呵了。 本文采用acme.sh 脚本,该脚本实现了 acme 协议, 可以从 letsencrypt 生成免费的证书 开源地址:https://github.com/Neilpang/acme.sh 脚本的好处就是不依赖任何第三方库 acme.sh主要是通过DNS API自动修改TXT来进行域名认证签发的,不需要开放80端口,前提是要域名服务商支持DNS API 由于我的域名是托管在google上的,acme.sh没有对应dns api脚本,所以这里介绍的是的手动添加txt记录的方法 ## 1.安装 acme.sh ```php 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 ``` 我是安装到`/volume1/docker/cert/challenges/acme.sh`#目录 ```php ./acme.sh --install --nocron --home "/volume1/docker/cert/challenges/acme.sh" --accountemail "email@gmailcom" ``` ``` source ~/.profile ``` 运行测试看看是否正常 ```php cd /volume1/web/challenges/acme.sh /volume1/docker/cert/challenges/acme.sh/acme.sh --home "/volume1/docker/cert/challenges/acme.sh" ``` 如果没有错误表示ok了 ~~## 2.修改ddns解析设置(我用的阿里云) ~~修改dsn_ali.sh里面的key和secret值并去掉`#`注释 ![](/usr/uploads/2021/03/4152923617.png) ![](/usr/uploads/2021/03/1619523219.png)~~~~ ## 2 修改配置文件 ![](/usr/uploads/2021/09/23570700.png) 以ali和dnspos为例,增加下面变量,别的接口去dnsapi找 ``` export DP_Id="" export DP_Key="" export Ali_Key="" export Ali_Secret="" ``` ## 3.1 利用脚本生成证书 ```php ./acme.sh --home "/volume1/docker/cert/challenges" --issue --dns dns_ali -d *.aaa.xyz --server letsencrypt ``` PS:上面看acme的github网址上写了默认CA是zerossl(7月5号,我看改成了letsencrypt),于是那天我按照之前网上的命令输入都不行,后面上github看才发现这个问题。所以大家在申请证书还是带上这个参数吧 –server letsencrypt ![](/usr/uploads/2021/09/2002975688.png) 签发完成后到/volume1/docker/cert/challenges对应的域名目录下把证书取下以下两个文件,到DSM证书管理手动导入即可 私钥:example.com.key 证书:example.com.cer ## 4.自动更新安装证书 自动续签证书,创建一个renew_ssl.sh文件,内容如下,上传到DSM ```php /volume1/docker/cert/challenges/acme.sh/acme.sh --home "/volume1/docker/cert/challenges" --renew --force -d example.com -d www.example.com ``` 自动安装证书,创建一个install_ssl.sh文件,内容如下,上传到DSM ```php /volume1/docker/cert/challenges/acme.sh/acme.sh --home /volume1/docker/cert/challenges --installcert -d www.example.com --certpath /usr/syno/etc/certificate/_archive/jwHUD3/cert.pem --keypath /usr/syno/etc/certificate/_archive/jwHUD3/privkey.pem --fullchainpath /usr/syno/etc/certificate/_archive/jwHUD3/fullchain.pem --capath /usr/syno/etc/certificate/_archive/jwHUD3/chain.pem --reloadcmd rsync -avzh /usr/syno/etc/certificate/_archive/jwHUD3/ /usr/syno/etc/certificate/system/default/ /usr/syno/etc/rc.sysv/nginx.sh reload ``` PS: `jwHUD3`改为你自己的目录 到DSM计划任务里新增两个自定义脚本任务,任务设置里把上面的脚本完整路径填上 设置为每月执行一次,renew_ssl.sh要先于install_ssl.sh,两个脚本最好有10分钟以上时间差。 ![](/usr/uploads/2021/03/813573555.png) ![](/usr/uploads/2021/03/2231872746.png) `/volume1/docker/cert/renew_ssl.sh >> /volume1/docker/cert/renew_ssl.log 2>&1` ## 也可以手动 生成TXT值 ```php ./acme.sh --home "/volume1/docker/cert/challenges" --issue --dns dns_ali -d aaaa.xyz -d *.aaaa.xyz ``` ``` Add the following txt record: Domain:_acme-challenge.example.com Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c Add the following txt record: Domain:_acme-challenge.www.example.com Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Please add those txt records to the domains. Waiting for the dns to take effect. ``` 根据上面的提示手动添加域名TXT记录,DNS刷新生效1分~48小时不等,google的1分钟就生效了 WMI Scripting HTML 当前访问者IP地址及地址归属: Last modification:September 15th, 2021 at 11:48 am © 允许规范转载 Support 如果觉得我的文章对你有用,请随意赞赏 ×Close Appreciate the author Sweeping payments