让TrueNAS自动申请Let’s Encrypt免费证书
本文介绍如何让truenas自动申请Let’s Encrypt免费证书,并自动续签。
对于需要外网访问truenas系统web界面的用户来说,必须配置https,才能确保信息安全。虽然使用自签名证书也可以达到目的,但是浏览器每次的不安全提醒令人烦不胜烦。本文介绍使用acme.sh和deploy_freenas.py自动申请、安装Let’s Encrypt免费证书到truenas系统,并自动续签的方法。这两个都是开源工具,大家可以放心。
一、准备工作
1、申请一个域名,并将域名解析到你的truenas地址。本文使用的是阿里云上托管的域名。
2、申请阿里云AccessKey,具体方法见:https://help.aliyun.com/document_detail/53045.html。将申请到的“AccessKey ID”和“AccessKey Secret”记下来。
3、为truenas添加一条API密钥:点击truenas管理界面右上角的“齿轮”图标,再点击【API密钥】-【添加】,名称随便填写,比如“deploy”。点击添加之后会出现密钥,将值复制下来。
4、打开【网络】-【全局配置】,更改主机名和域名为你所使用的域名

二、申请并安装证书
1、安装acme.sh
使用root账户登录终端,运行:
curl https://get.acme.sh | sh
退出终端,并重新登录,使用以下命令查看是否安装成功,如果出现版本号则说明安装成功。
acme.sh --version
2、安装deploy-freenas
git clone https://github.com/danb35/deploy-freenas nano /root/deploy-freenas/deploy_config //写入如下内容,api_key改为从truenas管理界面中生成的API密钥 [deploy] api_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3、添加一个申请证书的脚本,并运行它申请、安装证书
nano /root/scripts/get-cert.sh //写入如下内容,注意将“Ali_Key”和“Ali_Secret”改为你的阿里云“AccessKey ID”和“AccessKey Secret”,将域名改为你自己的 #!/bin/bash export Ali_Key="XXXXXXXXXXXXXXXX" export Ali_Secret="XXXXXXXXXXXXXXXXXXXXXX" /root/.acme.sh/acme.sh --issue -d truenas.nasgeek.cn --dns dns_ali --server letsencrypt --reloadcmd "/root/deploy-freenas/deploy_freenas.py" //写入内容到此为止 chmod 700 /root/scripts/get-cert.sh bash /root/scripts/get-cert.sh
安装成功后,可以在【系统】-【证书】中看到已经自动添加了一个新证书
在【系统】-【常规】中,可以看到已经自动使用了刚才申请的证书。
三、自动续签
在truenas系统界面【任务】-【计划任务】中添加一个定时任务
命令填写:
bash /root/scripts/get-cert.sh
“以用户身份运行”选择“root”,“计划”按默认的每天运行一次就可以了。如果证书未到期,将不会再重复申请;如果程序检测到证书到期将会再自动申请一个新证书。
如果你的域名托管在其它服务商,请参考:https://github.com/acmesh-official/acme.sh/wiki/dnsapi。只需按照说明将get-cert.sh里的内容改一下即可。
声明:本文为本站【NASGEEK】原创文章,未经许可不得转载!