当前位置: 首页 > news >正文

TrueNas 25.04 ACME设置阿里DNS

TrueNas 25.04 ACME设置阿里DNS

原帖在这里:Howto: ACME DNS-Authenticator shell script using acmesh project

但是原帖的脚本好像有些问题,此处进行更正,并提供测试方法

SSL证书有网站验证和DNS验证两种。对于没有公网条件Nas设备,DNS验证是很好的方法。

但TrueNas 25.04默认的ACME DNS只有cloudflare/digitalocean/route53/OVH这四个DNS提供商,其他的想用DNS验证就只能自己写shell。这里用阿里云dns举例

设置Shell ACME DNS-Authenticators

1. 为脚本找一个存放的位置

无论是创建dataset还是直接放到系统里,选择一个目录存放之后的脚本。这个地址会存放明文密码,注意权限。

2. 创建Shell

cd <dir>
mkdir config # acme.sh需要一个保存用户配置的目录,会明文保存密码,注意权限
git clone https://github.com/acmesh-official/acme.sh.git
vim acmeShellAuth.sh
chmod 700 config acmeShellAuth.sh
#!/bin/bash### VARIABLES
# Logfile
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
LOGFILE="${SCRIPT_DIR}/acmeShellAuth.log"# Source acmesh scripts
export ACME_FOLDER="${SCRIPT_DIR}/acme.sh" # Change this path to reflect yourf environment
export ACME_DNSAPI="${ACME_FOLDER}/dnsapi"
export PROVIDER="dns_ali" # Find provider script in 'dnsapi' folder
source "${ACME_FOLDER}/acme.sh" --config-home "${SCRIPT_DIR}/config" > /dev/null 2>&1
source "${ACME_DNSAPI}/${PROVIDER}.sh" > /dev/null 2>&1# Dns API authentication. See details for your provider https://github.com/acmesh-official/acme.sh/wiki/dnsapi
export Ali_Key=""
export Ali_Secret=""### FUNCTIONS
_log_output() {echo `date "+[%a %b %d %H:%M:%S %Z %Y]"`" $*" >> ${LOGFILE}
}### MAIN
_log_output "INFO Script started."
# File/folder validation
if [ ! -d "${ACME_FOLDER}" ]; then_log_output "ERROR Invalid acme folder: ${ACME_FOLDER}"return 1
fi
if [ ! -f "${LOGFILE}" ]; thentouch "${LOGFILE}"chmod 500 "${LOGFILE}"
fi
# Main
#_log_output "$0" "$@" #only for debug
_log_output "$1" "$2"
if [ "${1}" == "set" ]; then${PROVIDER}_add "${3}" "${4}" >> ${LOGFILE} 2>/dev/null#_log_output "${PROVIDER}_add" "${3}" "${4}" # only for debug
elif [ "${1}" == "unset" ]; then${PROVIDER}_rm "${3}" "${4}" >> ${LOGFILE} 2>/dev/null#_log_output "${PROVIDER}_rm" "${3}" "${4}" # only for debug
fi
#_log_output "$0" "$@" # only for debug
_log_output "INFO Script finished."

测试一下你的脚本:

./acmeShellAuth.sh set nas.your.domain _acme-challenge.nas.your.domain ABCDEFG
./acmeShellAuth.sh unset nas.your.domain _acme-challenge.nas.your.domain ABCDEFG

如果确定是acme dns的问题,可以source这个脚本

source acmeShellAuth.sh
dns_ali_add _acme-challenge.nas.your.domain ABCDEFG
dns_ali_rm _acme-challenge.nas.your.domain ABCDEFG

3. 添加Shell DNS-Authenticators

在 Credentials-> certificates -> ACME DNS-Authenticators -> Add 添加

  1. Name -> 随便填写
  2. Authenticator -> shell
  3. Script -> 指向脚本的绝对路径,如:/mnt/data/acme/acmeShellAuth.sh
  4. User -> 设置执行脚本的用户,确保以该用户运行脚本无问题
  5. Timeout -> 60
  6. Delay -> 60

4. 创建CSR,并用上面创建的DNS-Authenticator验证

image

先Add,填写相关信息。然后点击扳手设置dns验证并进行验证。

阿里云RAM权限设置

新增带AccessKey的用户

想要获得阿里云的Accesskey,需要新增用户,选中`使用永久AccessKey。

image

设置用户权限

如果没有特殊需求可以为账户设置所有DNS权限AliyunDNSFullAccess,如果AccessKey泄漏,可以访问该用户名下所有域名的解析。

或者,需要新增一个权限策略,限制AccessKey访问某个特定的域名。

理论上应该还可以设置只允许TXT记录,没有深入研究了,限定域名对我来说已经足够。

{"Version": "1","Statement": [{"Effect": "Allow","Action": ["alidns:DescribeDomainRecords","alidns:DeleteDomainRecord","alidns:AddDomainRecord"],"Resource": "acs:alidns:*:*:domain/your.domain"},{"Effect": "Allow","Action": "alidns:DescribeDomains","Resource": "*"}]
}
http://www.sczhlp.com/news/9286/

相关文章:

  • 储能功能及盈利模式
  • 题解:[Ynoi2011] ODT
  • PAC Bayes 学习笔记
  • 爬虫入门笔记!
  • for循环和while循环
  • 8.10随笔
  • 8.4.2 创建和终止进程
  • nimber 与 Sidon 集构造
  • 题解:B4304 [蓝桥杯青少年组省赛 2024] 通关游戏的最少能量值
  • 【CAN通信】CAN和LIN的区别
  • [ZJOI2019] 开关
  • 图论
  • 通过Certbot自动申请更新HTTPS网站的SSL证书
  • 小红的树不动点
  • 垂直前沿:3D-NAND演进、AI、HPC应用及未来趋势的深度分析报告
  • 对称数据高效机器学习新算法突破
  • sql常用
  • 命令行修改Oracle实例名
  • 防火墙对指定IP开放端口
  • 利用Cookie三明治技术窃取HttpOnly Cookie
  • 8 月 10 日模拟赛总结 - sb
  • 生成函数和多项式学习笔记。
  • 修复C++14兼容性问题 逻辑检查 - 详解
  • Java入门+基础(注释→类型转换)
  • 爆零小技巧合集【施工中】
  • win清除缓存
  • 接口文档 Knife4j
  • 02010701 深入理解类01-静态成员、字段与属性关联
  • Dp优化1
  • 1一些sql