Certificate Inspector:基于 Playwright 的全链路 SSL 证书检测工具

一、新闻概述

1. 标题

Certificate Inspector:使用 Playwright 捕获网页完整网络足迹的 SSL 证书检测工具

2. 发布时间

2025 年 1 月(GitHub 开源项目)

3. 来源

GitHub 开源仓库:shanselman/cert-inspector

二、核心内容

1. 事件摘要

A. 主要内容

Certificate Inspector 是一款基于 Node.js 和 Playwright 的 Web 工具,能够检测网页加载过程中所有域名的 SSL 证书和 DNS 记录。其核心创新在于使用无头浏览器捕获完整请求树,包括 JavaScript 动态加载的资源、广告、追踪器和 API 调用。

B. 核心亮点

  • 完整请求树捕获:通过 Playwright 无头 Chromium 拦截所有网络请求
  • 多维度证书检测:SSL 详情、证书链、TLS 版本、HSTS 状态
  • 健康度仪表板:颜色编码状态、进度条可视化、按紧急程度排序
  • 多视图展示:详细表格、摘要卡片、时间线三种视图
  • 多种部署方式:独立可执行文件、Docker、Codespaces、本地开发

2. 关键信息

A. 技术栈

  • 后端:Node.js + Express
  • 浏览器自动化:Playwright(无头 Chromium)
  • 证书解析:Node.js 原生 tls 模块

B. 开源协议

MIT License

C. 部署选项

  • Windows/macOS/Linux 可执行文件
  • Docker 容器
  • GitHub Codespaces(云端运行)
  • 本地开发环境

3. 背景介绍

A. 痛点分析

传统 SSL 检测工具存在以下局限:

  • 仅检测主域名,无法发现第三方资源
  • 无法捕获 JavaScript 动态加载的连接
  • 无法识别隐藏的追踪器和 API 调用
  • 缺乏可视化的健康度评估

B. 解决方案

通过 Playwright 模拟真实用户访问,拦截所有网络请求,实现对网页完整网络足迹的全面检测。

三、详细报道

1. 主要功能

A. 深度检测

  • 完整请求树捕获:使用无头 Chromium 加载页面并捕获所有网络请求
  • DNS 查询:每个域名的 IPv4/IPv6 地址和 CNAME 记录
  • SSL 证书详情:主题、颁发者、有效期、序列号、指纹
  • 证书链:查看完整的信任链
  • TLS 版本:检测域名是否使用 TLS 1.2 或 1.3
  • HSTS 状态:检查是否启用 Strict-Transport-Security
  • 响应时间:测量到每个域名的连接延迟

B. 健康度仪表板

  • 颜色编码状态:绿色(健康)、黄色(即将过期,小于等于 30 天)、红色(已过期/无效)、灰色(无 HTTPS)
  • 进度条:证书健康状况的可视化分解
  • 按紧急程度排序:问题优先显示
  • 剩余天数:大号可扫描的数字显示

C. 多视图展示

  • 详细视图:完整表格,可展开证书详情
  • 摘要视图:紧凑卡片网格,快速扫描
  • 时间线视图:证书过期的可视化时间线

D. 工具与过滤器

  • 搜索:按域名过滤
  • 状态过滤:按健康状态显示/隐藏
  • 颁发者过滤:按证书颁发机构分组(Let's Encrypt、DigiCert 等)
  • 深色模式:护眼模式
  • 点击复制:域名、指纹、序列号
  • 导出:下载 JSON 或 CSV 格式结果

2. 技术架构

A. 系统组成

graph TB
    User[用户浏览器] -->|访问| WebUI[Web 界面]
    WebUI -->|提交 URL| API[Express API 服务器]
    API -->|创建页面| Playwright[Playwright 无头浏览器]
    Playwright -->|加载页面| Target[目标网页]
    Playwright -->|拦截请求| Network[网络请求拦截器]
    Network -->|提取域名| DNS[DNS 解析器]
    Network -->|提取证书| TLS[TLS 证书解析器]
    DNS -->|返回结果| API
    TLS -->|返回结果| API
    API -->|返回数据| WebUI

Certificate Inspector 系统架构

B. 核心工作流程

sequenceDiagram
    participant U as 用户
    participant W as Web 界面
    participant P as Playwright
    participant T as 目标网页
    participant D as DNS 解析
    participant C as 证书检查

    U->>W: 输入 URL
    W->>P: 创建浏览器上下文
    P->>T: 加载目标页面
    P->>P: 拦截所有网络请求
    loop 每个请求
        P->>D: 解析 DNS 记录
        P->>C: 检查 SSL 证书
        D-->>P: IP 地址、CNAME
        C-->>P: 证书详情、链、TLS 版本
    end
    P-->>W: 返回完整结果
    W-->>U: 显示健康度仪表板

核心工作流程时序图

C. 数据处理流程

graph LR
    A[网络请求] --> B[域名提取]
    B --> C[DNS 解析]
    B --> D[TLS 握手]
    C --> E[IP/CNAME 记录]
    D --> F[证书链获取]
    F --> G[证书解析]
    G --> H[健康度评估]
    E --> H
    H --> I[结果聚合]
    I --> J[视图渲染]

数据处理流程图

3. 部署方案

A. 独立可执行文件

  • 无需安装 Node.js
  • 首次运行自动下载浏览器
  • 支持 Windows、macOS、Linux

B. Docker 容器

  • 适合团队和服务器环境
  • 需要 Docker Desktop

C. GitHub Codespaces

  • 完全在浏览器中运行
  • 无需安装任何软件
  • GitHub 提供每月 60 小时免费使用

D. 本地开发

  • 适合贡献者和开发者
  • 需要 Node.js 环境

4. API 接口

# 获取 JSON 格式结果
curl -H "Accept: application/json" "http://localhost:3000/inspect?url=https://example.com"

# 获取 HTML 格式结果(默认)
curl "http://localhost:3000/inspect?url=https://example.com"

5. 应用场景

A. 安全审计

检查 Web 资产的证书健康状况

B. 第三方风险评估

查看网站依赖的外部域名

C. 合规性验证

验证 TLS 版本和 HSTS 部署

D. 调试分析

理解页面的完整网络足迹

E. 证书监控

在证书过期导致中断前捕捉

四、影响分析

1. 行业影响

A. 填补工具空白

传统 SSL 检测工具仅关注主域名,Certificate Inspector 首次实现了对网页完整网络足迹的检测,填补了第三方资源检测的空白。

B. 提升安全可见性

通过可视化展示所有依赖域的证书状态,帮助安全团队发现被忽视的风险点。

2. 用户影响

A. 安全团队

  • 快速识别证书过期风险
  • 全面掌握第三方依赖
  • 优先处理紧急问题

B. 开发者

  • 调试网络请求问题
  • 验证 HTTPS 部署
  • 优化页面加载性能

C. 运维人员

  • 监控证书过期时间
  • 规划证书续期
  • 确保 HSTS 正确配置

3. 技术趋势

A. 浏览器自动化应用

Playwright 在安全检测领域的应用展示了浏览器自动化技术的潜力,未来可能催生更多类似工具。

B. 主动式安全检测

从被动检测转向主动式、全面化的安全评估,体现了安全工具的发展趋势。

C. 可视化与用户体验

安全工具越来越注重用户体验和可视化呈现,降低了技术门槛。

五、各方反应

1. 社区反馈

项目采用 MIT 开源协议,欢迎社区贡献,PR 接受前需先讨论变更内容。

2. 技术评价

A. 优势

  • 全面的请求捕获能力
  • 多样化的视图展示
  • 灵活的部署方式
  • 友好的用户界面

B. 适用场景

  • 中小型网站的证书监控
  • 安全审计和风险评估
  • 开发和调试环境

六、相关链接

1. 项目地址

2. 技术文档

  • Playwright 官方文档
  • Node.js tls 模块文档

参考资料

  1. Certificate Inspector - GitHub
最后修改:2026 年 01 月 23 日
如果觉得我的文章对你有用,请随意赞赏