本文介绍如何让truenas自动申请Let’s Encrypt免费证书,并自动续签。

对于需要外网访问truenas系统web界面的用户来说,必须配置https,才能确保信息安全。虽然使用自签名证书也可以达到目的,但是浏览器每次的不安全提醒令人烦不胜烦。本文介绍使用acme.shdeploy_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】原创文章,未经许可不得转载!

2 对 “让TrueNAS自动申请Let’s Encrypt免费证书”的想法;

    1. 是acme.sh已经更新了,申请证书的命令需要加一个参数“–server letsencrypt”。教程中已修改过来了。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注