我们之前申请的阿里云自签名证书有两个缺点:
- 不支持泛域名(*.你的.域名)
- 3个月就会过期。
既然用上了Lucky,
玩机日记 12 fnOS使用lucky反代https转发到外网提供服务-CSDN博客
就用Lucky申请一个半永久不会过期(过期前自动重新申请)并且支持泛域名的证书吧。
1、Lucky支持验证的域名(以阿里云为例)
域名验证
颁发机构选择lets encrtpt
验证方式就选择你的域名注册商,按照提示操作,比如阿里云要先创建accesskey并填入。域名列表就填 *.你的.域名 (例如*. baidu.com)
保存到本地
打开证书映射,添加一个保存路径
自动生成pkcs#12证书
这样申请的证书是没有.pfx/.p12格式的。所以我们要写个脚本自动生成
创建密码文件
#创建证书密码,在双引号中输入你想创建的密码
#放在用来保存证书的文件夹内
echo "创建一个密码" > pfx-password.txt
密码可以是数字(0-9)、大小写字母(a-z, A-Z)以及其他特殊字符(如 @
, #
, &
, !
等)组成。
创建自动生成脚本
nano /usr/local/bin/generate_pfx.sh
输入以下内容
#!/bin/bash
# 检查是否提供了文件夹路径
if [ -z "$1" ]; then
echo "请提供包含证书和私钥文件的文件夹路径。"
exit 1
fi
# 进入指定的文件夹
cd "$1" || exit
# 自动检测域名(假设证书文件名包含域名)
domain=$(ls *.pem | sed 's/\.pem$//')
# 检查是否找到了证书文件
if [ -z "$domain" ]; then
echo "未找到证书文件。"
exit 1
fi
# 提取PFX密码
PFX_PASSWORD=$(cat "./pfx-password.txt")
if [ -z "$PFX_PASSWORD" ]; then
echo "密码文件为空,无法生成PFX文件"
exit 1
fi
# 生成 .pfx 文件
openssl pkcs12 -export -out "${domain}.pfx" -inkey "${domain}.key" -in "${domain}.crt" -certfile "${domain}_issuerCertificate.crt" -password "pass:$PFX_PASSWORD"
echo "已生成 ${domain}.pfx 文件。"
#添加可执行权限
chmod +x /usr/local/bin/generate_pfx.sh
#使用方法
generate_pfx.sh <证书所在的文件夹>
将脚本添加到证书变化后的脚本,点击添加
这样就申请成功了
PKCS#12证书也成功创建了
2、Lucky默认不支持验证的域名(以贝锐花生壳为例)
修改DNS
对于默认不支持验证的域名,我们可以暂时把它添加到支持验证的注册商(比如阿里云),然后使用添加的注册商进行验证。验证完再把注册商改回去。
添加到阿里云:云解析 DNS
我这里添加了一个贝锐花生壳的域名,它提示要修改dns
来到贝锐的域名管理平台,点击域名
把dns修改成阿里云的
回到阿里云,刷新网页
验证申请证书
已经成功把贝锐花生壳的域名添加到阿里云了。接下来参考
进行操作即可。
可以看到创建成功了
之后可以把贝锐的dns改回去。
当然,如果你不用花生壳的ddns或者url解析功能的话,也可以不改回去,直接改用阿里云来做域名解析也可以的。
等证书还有一个月过期的时候,要再把贝锐的dns改成阿里云,然后进lucky手动续签一下。
3、替换现有的证书
fnOS
fnos不支持指定证书路径,所以如果要配合lucky自动更新证书的话,就只能使用lucky进行反代
修改https端口
我们之前把路由器wan1024-65535的端口都转发到了fnos。所以这里只要把https端口改成一个比1024小的数,就可以阻止公网访问fnos提供的https服务了
注意,不可以勾选强制https连接!
使用lucky反代
qBittorrent
Jellyfin
AList
nano /vol1/@appdata/alist3/config.json
Proxmox VE
pve也不支持自定义证书路径,所以我们先把之前上传的证书删除了,再通过lucky反代
删除证书
修改端口转发
直接禁用旧的规则即可。因为我们在下面配置了1024-65535都会转发给fnos,禁用pve转发规则后,8006端口也在1024-65535的范围内,就会一块被转发给fnos了。
使用lucky的web服务反代(错误示范)
不可以这样添加端口转发!
会导致重定向循环
这似乎是lucky+pve转发特有的bug,我们需要使用目标地址Host请求头才能正确访问
正确做法
删除上面创建的转发规则。
转到web服务,点击添加web服务规则
如图,点击添加
点击添加子规则,要勾选使用目标地址host请求头
再次访问就没有问题了