收起左侧

域名和证书的那些事

1
回复
16
查看
[ 复制链接 ]

7

主题

53

回帖

0

牛值

初出茅庐

一、域名购买和免费域名

想稳定访问和不差钱就购买一个域名,然后托管到喜欢的平台就行

想免费使用,并且喜欢折腾研究可以考虑申请免费的二级域名。下面我就介绍一下我折腾的几个域名

1.DNSHE 免费域名 [url=www.dnshe.com]www.dnshe.com[/url]

我折腾了3个后缀的域名(自己邀请自己注册几个账号,最后就可以获取bbroot.com后缀的域名了)

image.png

CC.CD后缀的是1年,到期后免费续期,这个我没测试能不能托管到cloudflare

bbroot.com后缀的 到期时间为2999年,到期后免费续期 这个后缀不能托管到cloudflare

ccwu.cc后缀的是10年, 到期后免费续期 这个后缀可以托管到cloudflare

ccwu.cc能托管到cloudflare,我就不细讲了,大概就是到cloudflare输入域名,生成dns服务器后,把服务器地址添加到dnshe 对应域名里就行,然后一步一步往下就ok!

bbroot.com不支持cloudflare,我就豆包了一下,顺便看了一下飞牛的ddns和自动申请证书 支持哪些服务商!

刚开始折腾dnspod.cn 发现txt验证死活不通过,就折腾freedns,freedns倒是不需要什么验证,只要注册一下freedns账号,然后把freedns的dns服务器添加到dnshe的bbroot.com域名里面,然后添加对应的解析,飞牛自带ddns也能直接添加,只要输入freedns的账号和密码和对应域名的信息就能解析了!飞牛添加的界面,就可以了

image.png

密码或token处填写密码就可以!

但是问题来了,证书,飞牛不支持freedns,然后我就看lucky等工具可不可以!后发现只能手动申请,然后需要txt验证,那只能手动申请证书!

后续就想再折腾dnspod.cn

image.png

登录腾讯云--云解析---权威解析---添加域名

image.png

输入自己申请的bbroot.com后缀的域名,然后就能看到如上所图,注意到验证需要主域名才可以!这个时候不要点txt校验!回dnshe平台!

image.png

然后发现dnshe管理后台 有根域名验证这个模块 到这豁然开朗了,原来都是自己眼睛没看清!

image.png

点进去 发现 支持dnspod,完美!

然后把dnspod里面生成的txt验证生成的信息填入到这,点击提交验证,然后返回到dnspod那点击txt校验!就直接添加进去了

image.png

然后点击域名后面的更多---解析(我这边已经解析了所以显示停止解析)

域名那边出现2个dns服务器,把服务器填写到dnshe里面

image.png

然后回dnpod里面去添加解析记录

image.png

最后到飞牛的ddns里面配置一下

image.png

需要API ID 和API token 不是腾讯云的SecretID 和SecretKey

API ID生成入口:[url=https://console.dnspod.cn/account/token/token]https://console.dnspod.cn/account/token/token[/url]防止找不到

image.png

点击创建秘钥,就能生成对应的API ID 和API token

然后就能正常配置

飞牛的ddns了

image.png

最后就是用飞牛的自动申请证书了

image.png

CC.CD后缀的域名我申请证书的时候应该是被墙了!ccwu.cc域名我托管在cloudflare,飞牛自动申请证书老是报错,后续我在lucky中自动申请证书了!证书的事情 后续我再讲讲

2.dpdns.org后缀域名,可以申请2个,1年到期后可以免费续期!可以托管到cloudflare,所以就不细讲了,第二个域名需要去github点⭐,然后验证一下!

注册地址:[url=https://dash.domain.digitalplat.org/auth/register

]https://dash.domain.digitalplat.org/auth/register

[/url]

二、证书申请和使用

理论上飞牛自带的ddns和证书申请后,外网 域名访问,APP都可以以https协议打开!docker项目如果没有配置https的端口的话,只能用工具反代,如lucky的web服务!

如果证书是lucky申请的,我记得域名解析是飞牛自带的,打开app好像还是会提示没有证书!

如果证书是飞牛申请的,docker项目用lucky反代后,也会提示没有证书!

我是这样设置的

能用飞牛自带的证书申请就用飞牛自带的,不能的或者报错了,我就用lucky!

然后在lucky中设置了证书映射等操作

1.飞牛证书给lucky

image.png

证书备注:建议写域名

添加方式:路径

证书路径:/usr/trim/var/trim_connect/ssls/对应域名地址/current/fullchain.crt

KEY路径:/usr/trim/var/trim_connect/ssls/对应域名地址/current/fnos1026.top.key

image.png

使用下来应该会自动更新时间

这样docker项目反代后不会出现没有证书,提示不安全了!

2.lucky证书给飞牛

image.png

前面设置和飞牛的设置差不多!

主要是证书映射

image.png

自己选一个存放lucky存放证书的地方,然后手动上传证书到飞牛

image.png

image.png

image.png

域名地址_issuerCertificate.crt:中间根证书

域名地址.crt:证书

域名地址.key:私钥

域名地址.pem:实体证书 + 中间证书拼接在一起的完整证书链

上传对应的前3个文件!

然后找到/usr/trim/var/trim_connect/ssls/对应域名文件夹/1781015799

image.png

发现多了一个fullchain.crt,这个应该是飞牛自动生成的!

然后需要搞一个自动更新的脚本,我暂时自己修改了一个脚本!

image.png

自己搞一个脚本,然后修改地址,如图

脚本内容如下:

yaml文件内容

fnos_cert_name: "域名"
acme_cert_name: "域名名称"

cert_path: "/data/cert/tmp"

#备份
backup_dir: "/vol3/1000/Download/lucky-cert/backup"

#飞牛证书存放路径

old_crt: "/usr/trim/var/trim_connect/ssls/域名文件夹/1781015799/域名.crt"
old_key: "/usr/trim/var/trim_connect/ssls/域名文件夹/1781015799/域名.key"
old_issuer: "/usr/trim/var/trim_connect/ssls/域名文件夹/1781015799/issuer_certificate.crt"
old_fullchain: "/usr/trim/var/trim_connect/ssls/域名文件夹/1781015799/fullchain.crt"

#lucky证书存放路径,自己修改

lucky_crt: "/vol3/1000/Download/lucky-cert/old/域名.crt"
lucky_key: "/vol3/1000/Download/lucky-cert/old/域名.key"
lucky_issuer: "/vol3/1000/Download/lucky-cert/old/fnos1026.ccwu.cc_issuerCertificate.crt"

domains:

"域名"

脚本内容:

脚本我还不知道行不行,论坛有大神发过脚本,但是里面好像有申请的脚本,我不需要,只要lucky从新申请证书后替换到飞牛就行!因为证书没到期 不能测试有没有错误

收藏
送赞
分享

本帖子中包含更多资源

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

x

7

主题

53

回帖

0

牛值

初出茅庐

2 小时前 楼主 显示全部楼层
<p>2楼脚本内容:</p>
  1. #!/bin/bash
  2. ##############################################################################
  3. # Lucky证书同步飞牛FNOS自动更新脚本
  4. # 适配域名:自己域名地址
  5. # 关键设定1:Lucky输出的最新证书存放在 /vol3/1000/Download/lucky-cert/old/ 目录
  6. # 关键设定2:飞牛旧业务证书备份目录独立为 /vol3/1000/Download/lucky-cert/backup
  7. # 核心逻辑:仅新旧证书过期时间不一致时执行**更新,时间相同直接退出不操作
  8. # fullchain处理方案:不使用lucky.pem,脚本拼接 站点crt+中间issuer,和飞牛原生链格式完全匹配
  9. # 触发方式:Lucky面板【证书变化后触发脚本】自动调用,无需定时轮询
  10. ##############################################################################

  11. # 日志文件路径,Lucky触发命令统一输出到此日志
  12. LOG_FILE="/vol3/1000/Download/lucky-cert/sh/out.log"
  13. # 获取脚本真实存放目录(兼容软链接)
  14. SCRIPT_DIR=$(dirname "$(realpath "$0")")
  15. # 同目录下配置文件
  16. CONFIG_FILE="${SCRIPT_DIR}/update_cert.yaml"

  17. # ===================== 日志统一打印函数 =====================
  18. # 自动拼接时间戳写入日志文件
  19. log() {
  20.     echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "${LOG_FILE}"
  21. }

  22. # ===================== 前置校验:配置文件必须存在 =====================
  23. if [ ! -f "${CONFIG_FILE}" ]; then
  24.     log "【致命错误】配置文件 ${CONFIG_FILE} 不存在,脚本终止运行"
  25.     exit 1
  26. fi

  27. # ===================== 读取YAML配置所有参数 =====================
  28. # FNOS数据库匹配标识
  29. FNOS_CERT_NAME=$(grep -oP '(?<=fnos_cert_name: ")[^"]+' "${CONFIG_FILE}")
  30. # 临时证书缓存目录
  31. CERT_PATH=$(grep -oP '(?<=cert_path: ")[^"]+' "${CONFIG_FILE}")
  32. # 飞牛旧业务证书独立归档备份目录(yaml内已改为backup文件夹)
  33. BACKUP_DIR=$(grep -oP '(?<=backup_dir: ")[^"]+' "${CONFIG_FILE}")

  34. # 飞牛系统正在使用的4个证书完整路径
  35. OLD_CRT=$(grep -oP '(?<=old_crt: ")[^"]+' "${CONFIG_FILE}")
  36. OLD_KEY=$(grep -oP '(?<=old_key: ")[^"]+' "${CONFIG_FILE}")
  37. OLD_ISSUER=$(grep -oP '(?<=old_issuer: ")[^"]+' "${CONFIG_FILE}")
  38. OLD_FULLCHAIN=$(grep -oP '(?<=old_fullchain: ")[^"]+' "${CONFIG_FILE}")

  39. # Lucky存放最新证书的源路径(old目录)
  40. LUCKY_CRT=$(grep -oP '(?<=lucky_crt: ")[^"]+' "${CONFIG_FILE}")
  41. LUCKY_KEY=$(grep -oP '(?<=lucky_key: ")[^"]+' "${CONFIG_FILE}")
  42. LUCKY_ISSUER=$(grep -oP '(?<=lucky_issuer: ")[^"]+' "${CONFIG_FILE}")

  43. # ===================== 校验Lucky目录下最新证书文件完整性 =====================
  44. # 三个核心证书缺失任意一个,直接报错退出
  45. if [ ! -f "${LUCKY_CRT}" ] || [ ! -f "${LUCKY_KEY}" ] || [ ! -f "${LUCKY_ISSUER}" ]; then
  46.     log "【错误】Lucky old目录下证书文件缺失,请检查路径:${LUCKY_CRT}"
  47.     exit 1
  48. fi

  49. # ===================== 核心判断逻辑:比对新旧证书过期时间戳 =====================
  50. # 读取飞牛当前业务证书过期时间,转换为秒级时间戳
  51. OLD_EXP_TS=$(openssl x509 -enddate -noout -in "${OLD_CRT}" | sed 's/.*=//' | xargs date +%s -d)
  52. # 读取Lucky old目录内最新证书过期时间戳
  53. NEW_EXP_TS=$(openssl x509 -enddate -noout -in "${LUCKY_CRT}" | sed 's/.*=//' | xargs date +%s -d)

  54. log "飞牛当前业务证书过期时间戳:${OLD_EXP_TS}"
  55. log "Lucky old目录最新证书过期时间戳:${NEW_EXP_TS}"

  56. # 分支1:两张证书过期时间完全一致 = 无新证书,直接退出,不备份、不替换、不重启服务
  57. if [ "${OLD_EXP_TS}" -eq "${NEW_EXP_TS}" ]; then
  58.     log "证书有效期完全一致,无需执行更新,脚本正常退出"
  59.     exit 0
  60. fi

  61. # 分支2:异常拦截,若Lucky证书有效期比现有业务证书更早,拒绝更新防止服务故障
  62. if [ "${NEW_EXP_TS}" -lt "${OLD_EXP_TS}" ]; then
  63.     log "【异常告警】Lucky目录证书有效期早于当前业务证书,放弃更新操作"
  64.     exit 1
  65. fi

  66. log "检测到全新有效证书,开始执行完整更新流程"

  67. # ===================== 创建临时缓存目录、独立备份目录 =====================
  68. # 自动创建backup目录,不存在则新建
  69. mkdir -p "${CERT_PATH}" "${BACKUP_DIR}"
  70. log "临时目录:${CERT_PATH}  |  证书备份目录:${BACKUP_DIR}"

  71. # ===================== 复制Lucky old目录证书至临时目录 =====================
  72. cp "${LUCKY_CRT}" "${CERT_PATH}/temp.crt"
  73. cp "${LUCKY_KEY}" "${CERT_PATH}/temp.key"
  74. cp "${LUCKY_ISSUER}" "${CERT_PATH}/temp_issuer.crt"

  75. # ===================== 关键步骤:拼接飞牛标准fullchain证书链 =====================
  76. # 不使用Lucky自带.pem文件,直接拼接【站点证书+中间证书】,和飞牛原生fullchain结构完全统一
  77. cat "${LUCKY_CRT}" "${LUCKY_ISSUER}" > "${CERT_PATH}/temp_fullchain.crt"
  78. log "已拼接生成和飞牛原生格式一致的fullchain.crt证书链"

  79. # ===================== 证书合法性双重校验,防止损坏证书导致服务宕机 =====================
  80. # 校验站点证书文件格式正常
  81. openssl x509 -in "${CERT_PATH}/temp.crt" -noout
  82. if [ $? -ne 0 ]; then
  83.     log "【校验失败】站点证书文件损坏,终止全部更新操作"
  84.     exit 1
  85. fi
  86. # 校验完整证书链信任链路合法
  87. openssl verify -untrusted "${CERT_PATH}/temp_fullchain.crt" "${CERT_PATH}/temp.crt"
  88. if [ $? -ne 0 ]; then
  89.     log "【校验失败】完整证书链验证不通过,终止全部更新操作"
  90.     exit 1
  91. fi

  92. # ===================== 备份飞牛原有旧业务证书(带精确时间戳区分) =====================
  93. BACKUP_TIMESTAMP=$(date +%Y%m%d_%H%M%S)
  94. mv "${OLD_CRT}" "${BACKUP_DIR}/自己域名地址(地址的点用_代替)_${BACKUP_TIMESTAMP}.crt"
复制代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则