Certd的搭建与证书自动部署与通知

702 字
4 分钟
Certd的搭建与证书自动部署与通知

前言#

前段时间去办了商宽,可算是有公网IP了 CloudFlare Tunnel实在太慢了

然后我白嫖了免费的pp.ua域名托管到了CF 现在只需要定期给域名申请证书就好了

开始折腾#

搜了一圈发现有个叫Certd的方案不错,类似于Certimates,不过这个有些功能要收费并且更强大

但其实他已经把东西开放出来了()收费的地方自己写也是能实现的

我需要的就是让他自动把证书部署到雷池WAF,因为我所有暴露到公网的服务都由雷池WAF提供

搭建#

Certd我就直接照着原来的compose部署到K8s上就好

这里放上yml

---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations: {}
labels:
k8s.kuboard.cn/name: certd-deployment
name: certd-deployment
namespace: certd
spec:
selector:
matchLabels:
k8s.kuboard.cn/name: certd-deployment
template:
metadata:
labels:
k8s.kuboard.cn/name: certd-deployment
spec:
containers:
- env:
- name: TZ
value: Asia/Shanghai
- name: certd_system_resetAdminPasswd
value: 'false'
image: 'registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest'
imagePullPolicy: IfNotPresent
name: certd
ports:
- containerPort: 7002
name: https
protocol: TCP
- containerPort: 7001
name: http
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /etc/localtime
name: localtime
readOnly: true
- mountPath: /etc/timezone
name: timezone
readOnly: true
- mountPath: /app/data
name: data
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
volumes:
- hostPath:
path: /etc/localtime
type: File
name: localtime
- hostPath:
path: /etc/timezone
type: ''
name: timezone
- name: data
persistentVolumeClaim:
claimName: certd-data
---
apiVersion: v1
kind: Service
metadata:
annotations: {}
labels:
k8s.kuboard.cn/name: certd-deployment
name: certd-deployment
namespace: certd
spec:
ports:
- name: http
port: 7001
protocol: TCP
targetPort: 7001
- name: https
port: 7002
protocol: TCP
targetPort: 7002
selector:
k8s.kuboard.cn/name: certd-deployment
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: my-acme-issuer
labels:
k8s.kuboard.cn/name: certd-deployment
name: certd-deployment
namespace: certd
spec:
ingressClassName: nginx-ingress
rules:
- host: certd.k8s.lan
http:
paths:
- backend:
service:
name: certd-deployment
port:
number: 7001
path: /
pathType: Prefix
tls:
- hosts:
- certd.k8s.lan
secretName: certd-tls-secret

然后局域网访问certd.k8s.lan进入管理员

默认账号密码是admin 123456 记得修改

证书流水线的创建#

首先的话创建一个流水线,我这里这么写:

chrome_DpNOEIH7GC.png
chrome_DpNOEIH7GC.png

然后的话去CF申请一个Token,这里不过多赘述了

域名所有权验证有HTTP和DNS两种方式,DNS就是让ACME直接与权威DNS解析商通信确认有Challenge的解析

Http则无法申请泛域名,这里的话最适合我们的还是DNS Challenge

然后手动运行证书申请,把申请的证书先复制一份到雷池(伏笔)

然后选择部署到雷池 这么写就好

chrome_gP5Clcb40I.png
chrome_gP5Clcb40I.png

我真正想说的其实是通知的配置,也是比较有意思的

通知配置#

我这边用的是bark,因为我用的iOS,Bark免费而且及其简单易用

我前面说过,Certd有些功能需要付费才能使用

chrome_X7Wu1BMGfy.png
chrome_X7Wu1BMGfy.png

真的是这样吗((

我们选择自定义web hook请求

Bark的API同时支持GET和POST

那不就简单了吗

chrome_ITmalBDa8v.png
chrome_ITmalBDa8v.png

这么写就好了

那么能不能用呢

当然是可以的了()不然我也不会发出来

QQ_yNsf9ogEXm.png
QQ_yNsf9ogEXm.png

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Certd的搭建与证书自动部署与通知
https://cainongw.github.io/posts/cert-auto-application/
作者
Cainong
发布于
2025-10-25
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
记一次filebrowser的搭建
Kubernetes 起因 我以为这个就是写个Deployment然后挂载NFS就得了 本来都不打算写blog的 结果后面发现折腾了我几个小时才好 还是有一点坑的 所以就写一下
2
基于authentik的局域网单点登录与通行密钥的配置与部署
Kubernetes 前言 Passkey 通行密钥 作为一种新的身份验证方式近几年开始慢慢流行起来了 该说不说 真的很好用 其安全且方便,理论来说Passkey的安全性是高于传统的2FA的(尤其是有生物认证的情况下) 但是目前只有一些大厂 比如Google Github 或者一些虚拟货币平台支持 国内几乎没有厂商支持 为数不多支持的微信还要求你用非+86的手机注册才可以用 我就
3
基于Gitlab Runner的CI/CD搭建
Kubernetes 前言 我已经搭建了很多七七八八的服务 应该是完全满足DevOps的需求了 但我还完全没有体验过整个流程呢 刚好我自己给Aqua的前端改了点代码 我决定搞一个自动部署
4
开源WAF 雷池在K8s上的搭建
HomeLab 前言 换了条宽带,现在我拥有动态的公网IPV4地址了 我打算暴露一些服务出去以便我使用 例如Openlist RDP Gitlab 但是 我并不打算公开 我只打算自己使用 前面我们搭建了Authentik作为SSO单点登录,刚好雷池WAF支持通过单点登录鉴权来允许访问 这样我就可以实现把ESXi挂到公网 但是不登录都过不了防火墙
5
记一次局域网内.lan域名的证书自签名并挂载到Ingress
HomeLab 前言 在Authentik的折腾中由于我们没有https导致passkey无法使用 并且想使用passkey必须要可用的证书 Chrome提示什么不安全的连接即使有https也是无法使用的 所以我们需要给.lan域名签一个证书并信任他
随机文章 随机推荐
Profile Image of the Author
Cainong
Caiw there 👋
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
站点统计
文章
38
分类
16
标签
48
总字数
57,650
运行时长
0
最后活动
0 天前

文章目录