摘要:在TrueNAS Scale上使用acme.sh自动部署Let's Encrypt证书
关键词:TrueNAS Scale,SSL,Web Security
参考:Let’s encrypt Certificate with AMCE Shell Script (amce.sh) on TrueNAS SCALE – SYSADMIN102™
自阿里云停止签发一年期的单域名SSL证书后,自动部署SSL证书便成为了我在公网上使用TrueNAS的痛点之一。前两天证书到期,瞬间所有服务全部瘫痪,近日有空才得以将其修复。
参考由SYSADMIN102大佬的文章,结合我的亲身实践,得出本文。

  1. 在WebUI>网络>全局配置中更改hostname和domain
    将自己的hostname和domain更改为你要申请的域名的地址。此步可做可不做,不做在下文中你需要将deploy_config中的hostname更改为你的域名。
  2. 在TrueNAS SCALE中部署acme.sh
    按照acme.sh的安装文档部署acme.sh。
curl https://get.acme.sh | sh -s email=xxxxxx@xxxxx.xxx

下载后,按照文档导入你的DNS验证方式,并申请一次证书。
acme.sh默认的ZeroSSL存在签发证书时timeout的问题,可以将默认CA更改为Let's Encrypt即可解决。
以我使用的阿里云为例:

export Ali_Key="Your API Key"
export Ali_Secret="Your API Secret"
acme.sh --set-default-ca --server letsencrypt --issue --dns dns_ali -d yourdomain.com

  1. acme.sh将使用DNS验证域名所有权,并签发证书。
  2. 生成API Key并使用deploy-freenas项目部署证书。
    在WebUI中,点击右上角电源选项左边的用户,点击API秘钥,生成一个API秘钥。
注意:此API秘钥只会生成一次,请妥善保管
git clone https://github.com/danb35/deploy-freenas

转到~/deploy-freenas,打开deploy_config.example。将其中的APIKey设为自己的APIKey,使用#注释掉下面的超级管理员密码。
若你未在第一步中更改自己的hostname与domain,请将下方的hostname设置为自己的域名。
若你更改了默认WebUI端口,请将下方的端口更改为HTTP的WebUI端口。
使用acme.sh部署证书。

acme.sh --install-cert -d yourdomain.com --reloadcmd "~/deploy-freenas/deploy_freenas.py"
  1. 设置定时更新

前往系统设置>高级>定时任务设置定时更新证书。

acme.sh --cron
  1. 在需要的地方使用自动签名的证书。
最后修改:2024 年 07 月 31 日
如果觉得我的文章对你有用,请随意赞赏