y509:用于查看和分析 X.509 证书链的终端用户界面 (TUI) 工具
Source: Dev.to
Introduction
你是否曾经在终端里眯着眼睛,试图解读 openssl s_client -connect … -showcerts 的输出?
它能工作,但要在一大堆文本中滚动查找颁发者或到期日期并不是一种良好的开发者体验。
“我想更直观、交互式地—and 最重要的是—有格调地检查证书链。”
基于此,我构建了 y509,一个使用 Go 编写、基于 Bubble Tea 的 TUI 工具。

Links
- GitHub Repository:
What is y509?
y509 是一个面向终端的用户界面(TUI)工具,专用于查看和分析 X.509 证书链。
名称是对 “X.509” 的俏皮致敬(或许也是因为 Y 紧随 X 之后)。
Key Features
- 直观的 TUI: 双窗格界面,左侧显示证书层级列表,右侧显示详细信息。
- 链路验证: 完整的验证功能并提供详细的错误报告。
- 搜索与过滤: 按 CN、组织或 DNS 名称搜索证书;按状态(已过期/即将过期)过滤。
- 导出功能: 将链中的特定证书导出为 PEM 或 DER 格式。
- 状态指示器: 对已过期或即将过期的证书使用颜色编码的警告。
Motivation
-
我想构建一个 TUI 工具
在使用了像 k9s 这样的工具后,我意识到 TUI 的强大之处。能够在不离开终端的情况下获得丰富、交互式的体验让我着迷,于是我尝试使用现代库来构建一个。 -
检查证书链很繁琐
使用openssl查看证书链非常麻烦,甚至更现代的step(smallstep)CLI 也只输出纯文本。一个可视化、交互式的工具可以让过程更快、更愉快。
Installation
macOS (via Homebrew)
brew tap kanywst/y509 https://github.com/kanywst/y509
brew install y509
Go Install
go install github.com/kanywst/y509@latest
Usage
y509 支持从本地文件读取,也支持直接从标准输入(stdin)读取。
The Killer Feature: Piping from OpenSSL
openssl s_client -connect example.com:443 -showcerts | y509
Reading from a File
y509 path/to/certificate-chain.pem
Controls
该工具使用 Vim‑like 键位绑定。
| 键 | 操作 |
|---|---|
j / k | 在证书列表中向上/向下导航 |
h / l | 在列表窗格和详情窗格之间切换 |
: | 进入命令模式 |
q | 退出应用 |
Command Mode
按 : 进入命令模式。此时可以执行高级操作,如验证、搜索和导出。
示例
- 搜索:
search google– 查找 CN/SAN/Org 中包含 “google” 的证书。 - 过滤:
filter expiring– 显示 30 天内即将过期的证书。 - 导出:
export pem output.pem– 将选中的证书保存到文件。 - 验证:
validate– 运行链路验证逻辑。
Tech Stack
该项目使用 Go 构建,并依赖 Charm 系列库:
- Bubble Tea – 基于 Elm Architecture 的强大 TUI 框架。
- Lip Gloss – 用于 TUI 的样式定义库。
这些库已经成为 Go 生态中现代 CLI 工具开发的事实标准。
Conclusion
将一个枯燥的验证任务做成 TUI 后,变得既直观又有趣。希望在你下次调试证书链时,这个工具能帮上忙!
试试看并在评论中告诉我你的想法。如果你觉得项目有用,给 GitHub 点个星星将不胜感激。