现在免费申请证书的途径很多,可以在域名服务商那里直接申请,这种证书一般是单域名的证书,那么问题来了,有没有适合群晖的证书申请方法,即能免费申请泛域名,又能自动更新证书呢,这样一劳永逸的方法,只需前期一次配置,后面就可以自动更新了。

安装acme.sh程序

使用putty或其它工具登陆群晖SSH端口,输入以下命令安装到/volume1/cert文件夹内:

 


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/cert/acme.sh”

 

或者直接在https://github.com/Neilpang/acme.sh下载后,解压到相应文件夹内。

获取域名服务商服务ID和密码并配置

域名服务商的ID和key,一般很容易获取,方法本网也有很多介绍的,这里就不啰嗦了。

然后去Dnsapi文件夹里找到对应的服务商文件配置,比如阿里云的是“dns_ali”,而腾迅云的是”dns_dp“,这样只需将前面记录的到该文件里修改即可,另需将其前面”#”去掉,让设置生效:

生成证书并配置自动更新配置

配置好后,请选用相应的代码进行生成证书,“/volume1/cert”是证书文件保存的位置,“dns_ali”是你服务商对应的代号,“example.cn”是你的域名,所以代码是:

./acme.sh –home “/volume1/cert” –issue –force –dns dns_ali -d example.cn -d *.example.cn

2022.05.01 : 由于原默认服务提供商为Let’s Encrypt,2021/08/01之后变为ZeroSSL(参考:https://github.com/acmesh-official/acme.sh/wiki/Change-default-CA-to-ZeroSSL),所以此处还需要增加以下步骤:

如果仍想使用Let’s Encrypt作为服务提供商,请在上述代码后面加上“–server letsencrypt”

如果使用默认ZeroSSL作为服务提供商,需要在生成证书前,先关联ZeroSSL的注册邮箱:

./acme.sh –register-account -m 你的邮箱@talklee.com –server zerossl

这一步执行后,会给你反馈一些信息,但是不用记,后续生成证书后在ZeroSSL的网站也可以查到记录。

一般如果配置成功的话,可以直接产生相应的证书,文件夹是以你的域名命名的,例如”example.cn”,里面有7个文件,分别是证书和系统文件,这样才成功。

如果需要自动更新,一般一个月更新一次就够了,更新脚本是:

./acme.sh –home “/volume1/cert” –renew –force -d example.cn -d *.example.cn

我这里使用的是群晖的计划任务,进行生成证书:

由于生成的证书是不包含pfx的,所以我在加了一个命令,生成pfx证书文件,其中“pass:123456”是pfx文件的密码,需自己设置:

openssl pkcs12 -export -out example.cn.pfx -inkey example.cn.key -in example.cn.cer -certfile fullchain.cer -password pass:123456

2022.05.01 : acme也自带了生成pfx证书的命令:

./acme.sh –toPkcs -d <domain> [–password pfx-password]

证书自动安装

更新脚本只能更新证书,但不可能每次手动去更新一次,太麻烦了,我们做一个脚本自动安装,先去“/usr/syno/etc/certificate/_archive”目录看,里面会有刚上传证书的目录,记住他的地址,然后运行脚本:

/volume1/cert/acme.sh/acme.sh –home /volume1/cert –installcert -d example.cn –certpath /usr/syno/etc/certificate/_archive/USAEVy/cert.pem –keypath /usr/syno/etc/certificate/_archive/USAEVy/privkey.pem –fullchainpath /usr/syno/etc/certificate/_archive/USAEVy/fullchain.pem –capath /usr/syno/etc/certificate/_archive/USAEVy/chain.pem –reloadcmd

rsync -avzh /usr/syno/etc/certificate/_archive/USAEVy/ /usr/syno/etc/certificate/system/default/

/usr/syno/etc/rc.sysv/nginx.sh reload

这里只需将example.cn改为你的域名,/usr/syno/etc/certificate/_archive/USAEVy改为你的地址就好了,然后运行该脚本,一般一个月一次,这个脚本要比上一个晚半个小时左右才好。

说点什么
教程内容无法面面俱到,有疑问的可以留言讨论|´・ω・)ノ
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...