收起左侧

不装新应用!FNOS全自动免费SSL续签指南

3
回复
375
查看
[ 复制链接 ]

1

主题

1

回帖

0

牛值

江湖小虾

常规方法

Lucky是款优秀的应用,方便零基础的兄弟低成本用上免费SSL自动续签。

但是!我知道论坛里都是高手,更喜欢自己折腾,或者介意Lucky的全能版功能太杂乱,害怕Key泄漏,那么这篇不装新应用,全手搓的教程会适合你!

核心原理

一句话:使用Docker容器自动签发证书,并自动部署到FNOS。

关键是这几步:

  1. 安装Alpine Linux的Docker镜像
  2. 安装acme.sh
  3. 选择DNS认证方式,并初始化好Key
  4. 部署到FNOS

详细步骤

Docker

使用FNOS的Docker能力,安装alpine。

设置清华源

sed -i 's#https\?://dl-cdn.alpinelinux.org/alpine#https://mirrors.tuna.tsinghua.edu.cn/alpine#g' /etc/apk/repositories

更新源并安装软件

apk update
apk add openssh # 用于部署证书产物
apk add acme.sh # 用于自动申请证书

ACME.sh

acme.sh 是一款开源ACME客户端,支持各种DNS认证插件,非常强大。

官网:https://github.com/acmesh-official/acme.sh

在 alpine 中直接用命令安装即可。

本文不会详细讲解它的用法,但会举两个常用DNS的例子。详细用法参见:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E

⚠️注意:建议指定 --server letsencrypt 使用 letsencrypt.org 的服务,默认的zerossl 有点拉

Cloudflare

  1. 创建api token https://dash.cloudflare.com/profile/api-tokens
  2. 申请证书
# For a single domain or multiple domains within the same Cloudflare account
export CF_Token="zfNp-Xm0VhSaCNun7dkLzwnw0UN7FNjaMurUZ8vf"
export CF_Account_ID="763eac4f1bcebd8b5c95e9fc50d010b4"
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com' --server letsencrypt

Tencent Cloud

  1. 创建api token https://console.cloud.tencent.com/cam/capi
  2. 申请证书
export Tencent_SecretId="<Your SecretId>"
export Tencent_SecretKey="<Your SecretKey>"
acme.sh --issue --dns dns_tencent -d example.com -d *.example.com  --server letsencrypt

Aliyun

  1. 创建 api token https://ram.console.aliyun.com/users
  2. 申请证书
export Ali_Key="<key>"
export Ali_Secret="<secret>"
acme.sh --issue --dns dns_ali -d example.com -d *.example.com --server letsencrypt

证书部署

申请好的证书是存在Docker中的,需要通过ssh工具部署到FNOS中。

允许root登录

FNOS默认是不允许root登录ssh的,可以通过调整 /etc/ssh/sshd_config 配置来允许。

PermitRootLogin prohibit-password

调整配置后,使用 systemctl restart ssh 生效。

免密码登录

在root家目录中配置证书,把公钥放到 /root/.ssh/authorized_keys 即可。记得替换成你自己的公钥,如果还没有,可以在你的工作电脑上运行 ssh-keygen 生成。

echo `ssh-ed25519 AAAAC3NzaCXXX YourKey` >> /root/.ssh/authorized_keys

添加证书

下载ACME.sh生成好的证书,并在FNOS中新增证书,上传。

菜单路径:设置 - 安全性 - 证书 - 新增证书

定位证书路径

登录ssh,运行 cat /usr/trim/etc/network_gateway_cert.conf 确认证书路径,注意区分系统默认证书和刚手动添加的证书。

里面会有一段类似这样的:

{
        "host": "example.com",
        "cert": "/usr/trim/var/trim_connect/ssls/example.com/1766327981/example.com.crt",
        "key": "/usr/trim/var/trim_connect/ssls/example.com/1766327981/example.com.key"
    }

部署证书

修改 /root/.acme.sh/account.conf ,追加:

SAVED_DEPLOY_SSH_USER='root'
SAVED_DEPLOY_SSH_SERVER='10.10.1.3'
SAVED_DEPLOY_SSH_CMD='ssh -T'
SAVED_DEPLOY_SSH_BACKUP='yes'
SAVED_DEPLOY_SSH_BACKUP_PATH='.acme_ssh_deploy'
SAVED_DEPLOY_SSH_MULTI_CALL='no'
SAVED_DEPLOY_SSH_KEYFILE='/usr/trim/var/trim_connect/ssls/example.com/1766327981/example.com.key'
SAVED_DEPLOY_SSH_CAFILE=''
SAVED_DEPLOY_SSH_FULLCHAIN='/usr/trim/var/trim_connect/ssls/example.com/1766327981/example.com.crt'
SAVED_DEPLOY_SSH_REMOTE_CMD='/usr/trim/nginx/sbin/nginx -s reload'
SAVED_DEPLOY_SSH_USE_SCP='no'
SAVED_DEPLOY_SSH_SCP_CMD='scp -q'

其中,SAVED_DEPLOY_SSH_SERVER 改成你的FNOS的IP地址,里面两个证书路径替换成上面获得的证书路径。

执行命令,完成部署,未来自动续签证书时,也会自动部署。

acme.sh --deploy -d eaxi.com --deploy-hook ssh

疑难杂症

DNS认证方式优势是不挑来源IP,也不要求签发证书和部署证书在同一台机器,但它带来了比较多的复杂性,比较容易出问题。

可以在 acme.sh 命令后面追加 --debug 来显示完整的过程信息,准确定位问题原因。

常见的原因可能是:

  • API Key出错:无权添加DNS TXT记录、过期、无效等
  • 网络问题
  • SSH无密码登录问题

可以问问LLM,一般都能得到比较好的回答。当然,也可以直接留言给我。

收藏
送赞
分享

64

主题

4986

回帖

935

牛值

共建版主

社区上线纪念勋章社区共建团荣誉勋章飞牛百度网盘玩家fnOS1.0上线纪念勋章

QQ_1766333095231.png

这里应该是apt不应该是apk。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
是 apk 没有错哈,这个是 alpine linux,不是 Debian/Ubuntu 。 Debian系才用 apt install  详情 回复
昨天 00:08

1

主题

1

回帖

0

牛值

江湖小虾

昨天 00:08 楼主 显示全部楼层
玉尺书生 发表于 2025-12-22 00:05
这里应该是apt不应该是apk。

是 apk 没有错哈,这个是 alpine linux,不是 Debian/Ubuntu 。

Debian系才用 apt install

64

主题

4986

回帖

935

牛值

共建版主

社区上线纪念勋章社区共建团荣誉勋章飞牛百度网盘玩家fnOS1.0上线纪念勋章

海子Mike 发表于 2025-12-22 00:08
是 apk 没有错哈,这个是 alpine linux,不是 Debian/Ubuntu 。

Debian系才用 apt install  ...

哦,你是在容器里的操作。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则