惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Last Watchdog
The Last Watchdog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Troy Hunt's Blog
L
LINUX DO - 最新话题
C
Check Point Blog
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
S
Security @ Cisco Blogs
IT之家
IT之家
T
The Exploit Database - CXSecurity.com
The GitHub Blog
The GitHub Blog
D
Docker
Engineering at Meta
Engineering at Meta
AWS News Blog
AWS News Blog
S
Security Affairs
U
Unit 42
P
Palo Alto Networks Blog
V
Visual Studio Blog
Y
Y Combinator Blog
D
DataBreaches.Net
Forbes - Security
Forbes - Security
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
Security Latest
Security Latest
aimingoo的专栏
aimingoo的专栏
Simon Willison's Weblog
Simon Willison's Weblog
A
Arctic Wolf
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hacker News: Front Page
博客园 - 司徒正美
博客园 - Franky
宝玉的分享
宝玉的分享
TaoSecurity Blog
TaoSecurity Blog
Latest news
Latest news
Scott Helme
Scott Helme
MongoDB | Blog
MongoDB | Blog
量子位
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
P
Privacy International News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog

Razeen`s Blog

Let's Encrypt 推出 Gen Y 根证书架构:揭示 Web PKI 的五大未来趋势 通过 Wi-Fi 自动备份你的 iPhone 到 Nas 管理培训感悟:从技术视角看管理之路 UPS 一拖多:保护你的 NAS 和 Linux 服务器 从影音中心到 AI 助手:我的50款 Homelab 服务清单 从SSL证书有效期将缩短到47天聊开去 部署一个自己的 Running Page 谈谈特斯拉 Model Y 用车一年的感受和费用分析 弃用 Disqus 评论,使用自建 Waline 服务器迁移记:一次磁盘换板引发的Linux分区与挂载的学习 改善信息来源, 利用 RSS 高效获取资讯 (RSShub + Reeder5 + WeWe RSS) 多种 Docker 镜像拉取解决方案与实践 App分享 | AppCleaner - Mac上的卸载神器 Azure OpenAI API 申请和使用 如何开通 OneKey 虚拟信用卡,并充值消费 如何拥有一个可长期在国内使用的国外手机号码 分享开通 ChatGPT Plus 过程 如何开通 Depay 虚拟信用卡,并充值消费 如何开通欧易Web3钱包, 交易入账 如何5分钟内1块钱注册 ChatGPT 如何注册美区的 Apple ID (2023年/无需科学上网) NAS折腾记(11): NASTool3.0体验和降级 NAS折腾记(10): Docker版本的NASTool配置 NAS折腾记(9): NASTool与微信交互,微信发送消息远程下载电影【多图】 NAS折腾记(8):群晖安装 NASTool 实现影音半自动化【多图】 内网穿透(2):Tailscale 组网实现内网穿透,操作简单,无成本 内网穿透(1):总结了11中内网穿透的方式,总有一种适合你 NAS折腾记(7):从零开始设置(黑)群晖系统 NAS折腾记(6):黑群晖系统安装好后怎么洗白? NAS折腾记(5):群晖硬盘休眠设置与分析 NAS折腾记(4): 20分钟手把手带你完美安装 DS918+ 黑群晖7.1.1 NAS折腾记(3):NAS 装机 NAS折腾记(2):B360-ITX 双M.2 双2.5G网口 6 SATA主版 开箱 NAS折腾记(1):328元的4盘位Nas机箱开箱 Openwrt + Clash 全局科学上网 Newifi3 刷入 OpenWrt 固件 v21.02 利用 Markdown 画一些流程图、时序图、甘特图等 Homelab(8): 搭建自用 Gitlab 与 Docker 仓库 Nginx Tcp 转发保留客户端真实 IP (PROXY Protocol) Homelab (7):IPSec VPN(基于证书认证)客户端设置 Homelab (6): 基于自签发证书的 IPSec VPN 搭建 Homelab (5): DDNS 动态域名解析 Homelab (4): Linux 服务器基础环境准备 Homelab (3): 整体网络与基础硬件介绍 Go学习笔记(十)老项目迁移 go module 大型灾难记录 Github Actions 初体验之自动化部署 Hexo 博客 记一次 Nginx DNS 缓存导致转发问题 Homelab (2): 电信悦me网关修改桥接模式,路由器拨号 Homelab (1):5分钟上手黑群晖 NAS 终极 Bash 脚本指南 Typora 自动上传图片到七牛云 Ubuntu 20.04 LTS 有线网卡驱动安装 折腾 Ubuntu 20.04 LTS 开发环境 Go学习笔记(九) 计时器的生命周期[译] 利用 git hook 规范你的代码与 commit message 规范 git commit message 与自动化版本控制 超详细 vim 配置 (with MacVim) Golang 中的 RESTful API 最佳实践 折腾服务器(开篇) 我的第一台个人服务器 Newifi3 实现低成本家庭级科学上网 Go学习笔记(八) | 使用 os/exec 执行命令 如何用 Go 调用 Windows API Mac OS 自动根据 WI-FI 名字改变网络位置 关于 Docker 清理 MIME Types 速查表 Go学习笔记(七) | 理解OAuth 2.0并实现一个客户端 我又又又把博客迁移了 Go学习笔记(六) | 使用swaggo自动生成Restful API文档 Go学习笔记(五) | 使用代码片段(snippets)提高编码效率 书单 - 2018 IPFS 初体验,利用 IPFS 托管你的静态网站 记一次 PostgreSQL LIKE 索引优化,联合字段 LIKE 查询优化。 Disqus 添加有趣的 Reactions 的功能 TLS 1.3 详解 (RFC 8446解读) gRPC在Go中的使用(三)gRPC实现TLS加密通信与流模式 gRPC在Go中的使用(二)gRPC实现简单通讯 gRPC在Go中的使用(一)Protocol Buffers语法与相关使用 CentOS 安装 tshark 抓包工具 Go学习笔记(四) | win上使用VSCode搭建Go开发环境 日常 Postgres 数据库点滴记录 简单了解 PKCS 规范 美食篇 | DIY戚风蛋糕(烤箱做蛋糕) Go学习笔记(三) | 怎么写Go基准测试(性能测试) TLS1.3正式更新,为Nginx添加TLS1.3的支持 一次诡异的数据库删除 GitHub Pages自定义域名开启HTTPS 证书透明度是什么?它是怎么工作的? Go学习笔记(二) | 我对 recover 的一点误解 搭建证书透明度(certificate-transparency)日志服务之从入门到放弃 修复远程登陆 Centos 时,出现 UTF-8 Warning HTTPS篇之SSL握手过程详解 Go学习笔记(一) | postgres与golang点点滴滴 AWS 命令行界面(aws-cli)从安装到快速上手 数字证书分类及怎么区分各类数字证书 常用 linux 命令小结(一)文件目录操作 云服务器搭建 hexo 博客,git hooks自动更新 SSH 免密登陆, SSH Config 配置 Golang CGO Mac 交叉编译 Windows 使用 goose 让数据库迁移更加轻松 开始使用Ghost
使用 Prometheus 和 Grafana 搭建你的证书监控面板
2024-09-07 · via Razeen`s Blog

最近发现个可以将证书有效期可视化展示的 Grafana Dashboard, 体验了一下还不错。配置简单,聚合了多个站点证书有效期,序列号,签发者等信息,一目明了,水篇博客分享给大家。

SCR-20240908-kpfk

SSL Exporter

众所周知,Prometheus 和 Grafana 是没法直接获取证书信息的,需要结合一些 Exporter 将信息转换成数据指标给到 Prometheus 后,再通过 PromQL 查询,最在 Grafana 报表中展示。这里就需要用到大佬开发的 ssl_exporter

ssl-exporter 可以从多个渠道获取SSL证书:

  1. TCP: 自动嗅探是什么协议,然后获取证书。看了一下源码,支持smtp ftp,imap,postgres,pop3
  2. HTTPS:这就是HTTPS站点的证书了。
  3. FILE: 从 ssl-exporter 本地的文件中获取证书。
  4. HTTP FILE:通过一个 url 获取证书文件。
  5. k8s:从k8s kubernetes.io/tls 类型的 secrets 中获取证书。
  6. KubeConfig:从指定的 kubeconfig 文件中获取证书。

获取 SSL 证书后,会将其转换成具体的指标(具体看官方README)。

同时项目中也提供了仪表盘配置,导入 Grafana 就可以使用。

下面介绍一下具体操作。

配置

直接使用docker-compose快速启动。

  • 文件 docker-compose.yml
services:
  ssl-exporter:
    image: 'ribbybibby/ssl-exporter:latest'
    container_name: ssl-exporter
    restart: always

  prometheus:
    image: 'prom/prometheus:latest'
    restart: always
    container_name: prometheus
    ports:
      - '19090:9090'
    volumes:
      - './prometheus.yml:/etc/prometheus/prometheus.yml'
      - './promwal:/prometheus'

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    volumes:
      - './grafana/data:/var/lib/grafana'
    ports:
      - '3000:3000'
    restart: always
  • 文件 ./prometheus.yml

    这里示例了 httpstcp 的模式,改下 targets中的 域名:端口 就好了,如下我写了一些示例站点。

    如果需要从 k8s等其他的服务中获取证书,可按照官方文档示例配置

scrape_configs:
  - job_name: "https"
    metrics_path: /probe
    params:
      module: ["https"] # <-----
    static_configs:
      - targets:
          - razeen.me:443
          - bing.com:443
          - expired.badssl.com:443
          - revoked.badssl.com:443
          - untrusted-root.badssl.com:443
          - self-signed.badssl.com:443
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: ssl-exporter:9219

  - job_name: "startssl"
    metrics_path: /probe
    static_configs:
      - targets:
          - smtp.qq.com:587
          - smtp.office365.com:587
          - smtp.163.com:587
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: ssl-exporter:9219 # SSL exporter.

docker-compose up -d启动后,稍等会,就可以在prometheus Status > Targets 中看到都UP了。

image-20240908110008619

访问 Grafana,初始化的用户名密码都是admin。 第一次登陆会引导更新密码。

  • Connections > Add new connection 中搜索的 prometheus , 点击添加;
  • 输入NameURL , 我们都在一个 docker 网络内,直接用标签加端口就能连接了, 即 http://prometheus:9090

SCR-20240907-uhia-2

接下来导入仪表盘就好了。

  • Dashboards中导入,选择 Import a dashboard
  • 复制 dashboard.json 粘贴并 Load, 然后在 Import

image-20240908112934039

到这里就可以看到博客开头的那个仪表盘了。

总结

通过这个仪表盘,将站点的证书信息方便的进行聚合展示,如果出现了到期,一眼就能看到。同时,如果有需要的话,可以通过到期时间的指标来设置告警规则,做到证书的到期通知。

但,也有一些不足,我加了一些已经吊销的证书,和自签发的站点,这里没法去区别出来,不能依靠其做很专业的监控。要专业的管理与监控可以试试 CertCloud