Anye
Anye
发布于 2025-05-29 / 415 阅读
0
2

SSL证书申请老出问题?这套组合直接帮你搞定!

前言

快毕业了,事情比较多哈,这个月没咋更新文章,不是鸽哈,这就来水一篇

2025年4月13日,关于缩短TLS服务器证书有效期和验证数据重用周期的提案 SC-081v3 获得通过(https://groups.google.com/a/groups.cabforum.org/g/servercert-wg/c/9768xgUUfhQ?pli=1),这意味着从今以后,TLS服务器证书的有效期将逐步缩短。

从2026年3月起,最大有效期将从当前的398天缩短为200天;2027年3月起缩短至100天;2028年3月起进一步缩短至90天;最终在2029年3月起缩短至47天。

作为个人站长,且不讨论该提案具体能带来多高的安全性,只能尽量适应更频繁的证书更新周期,尽早完善自动化申请与部署流程,以避免频繁过期带来的访问故障。

当然,我使用的免费证书早就是90天的有效期了,一直都是自动化部署更新的,现在也是稳定运行,分享一下组合方案:

CNB + Certimate + 1Panel

准备工作

  • CNB 账号一个

  • 安装好的 1Panel 面板一个

  • 基本的语文素养

CNB Accelerates Web

本步骤用于加速CA证书申请网络,境外机器请略过

1. 创建CNB账号

打开https://cnb.cool,点击右上角 登录,使用微信扫码创建账号。

2. 创建组织

根据需要填写组织名创建组织

3. 创建仓库

选择仓库归属组织,填写仓库名称创建仓库

如此处能得到仓库:Anyexyz/Temp/runtime记住该 REPO

4. 创建访问令牌

访问https://cnb.cool/profile/token/create,创建访问令牌,使用范围建议选定刚才创建的仓库

授权范围需要勾选

  • repo-cnb-trigger :读写

  • repo-cnb-detail :只读

其余权限保持默认,点击 创建

你会得到这样一个东西:

令牌名:caw
Git Username:cnb
Token:c5Tg9ty0bOTjB1d84aAFA19i2SC

记住此处的 Token

5. 在 1Panel 中创建容器编排

networks:
    1panel-network:
        external: true
services:
    caw:
        container_name: caw
        image: docker.cnb.cool/anyexyz/cnb-accelerates-web:latest
        environment:
            - CNB_TOKEN=c5Tg9ty0bOTjB1d84aAFA19i2SC # 将这里的 c5Tg9ty0bOTjB1d84aAFA19i2SC 换成你上面获取到的token
            - CNB_REPO=Anyexyz/Temp/runtime         # 将这里的 Anyexyz/Temp/runtime 换成你的 REPO
        networks:
            - 1panel-network
        restart: unless-stopped

注意:请确保同时设置CNB_TOKEN和CNB_REPO环境变量,否则程序将无法正常运行。

点击 确认

6. 查看运行状态

查看容器日志,如下图即正常启动

Certimate

1. 安装 Certimate

1Panel 应用商店搜索 Certimate 并安装。

安装参数中:HTTP_PROXYHTTPS_PROXY 均填写为 http://caw:3128NO_PROXY 填写 172.18.0.0/16,127.0.0.1,localhost172.18.0.0/161panel-network 的子网),如下图:

确认安装。

2. 登陆 Certimate

初始的管理员账号及密码

账号:admin@certimate.fun

密码:1234567890

3. 授权管理

点击左侧的 授权管理 ,进行配置

添加主机提供商——1Panel

添加 1Panel 面板,名称根据需求填写,服务地址填写 1Panel 面板地址

密钥获取位置:面板设置 - API 接口 - 详情 ,如图:

若面板使用了自签 SSL 证书,需要开启 忽略 SSL/TLS 证书错误

添加DNS提供商——以腾讯云为例

按需填入自域名所在腾讯云账号的 SecretIdSecretKey ,获取办法参考:https://cloud.tencent.com/document/product/598/40488

其他DNS提供商所需要的凭证以及权限要求参考:https://docs.certimate.me/docs/tutorial/authorization-management

添加证书颁发机构——以Google Trust Services为例

gcloud beta publicca external-account-keys create
  • 此时会弹出 “为 Cloud Shell 提供授权”,点击授权即可。

  • 执行完成后会返回类似如下输出;注意不要在没有收到 Google 的邮件时执行该命令,会返回命令不存在。

Created an external account key
[b64MacKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
keyId: xxxxxxxxxxxxxxxxxxxxxx]

注意:复制 keyId 时不要把最后的 ] 也复制进去了。

注意:EAB 授权使用过一次之后,会绑定邮箱,后续再次使用时,要使用相同的邮箱,否则会报错。

得到:

4. 创建工作流

在左侧菜单点击 工作流 ,点击 创建工作流 ,从标准模版创建

根据需求填写证书配置

选定部署位置

这里的 1Panel 证书 ID后续可能会更新为直接选择而不是手动填写 ,现阶段需要通过 F12 抓包获取:

可以看到这里的证书 ID 为 7。

根据需求创建推送通知

保存。

5. 测试

发布更改,点击执行测试工作流是否正常。

成功执行。

网站证书也同步更新了。

1Panel

1Panel HTTPS 配置:选择已有证书,存量/自签证书,即可

总结

这里的 CNB Accelerates WebCertimate 提供了证书申请网络的代理,最大程度避免了境内机器由于网络问题而导致的证书申请失败,同时 Certimate 定时更新证书的工作流也能大幅降度运维人员的工作量。

欢迎各位大佬体验。


评论