证书解析
编码所有处理都在浏览器本地完成,数据不上传服务器
把 `.crt` / `.pem` 的内容粘进来,读出版本、序列号、主体、签发者、有效期、公钥、SAN、密钥用法、签名算法与 SHA-256 / SHA-1 指纹。PEM、裸 base64、十六进制三种写法都收。 ⚠️ 只读不验。 这是用这个工具之前必须知道的一条:一张证书「能解析」与「可信」是两件完全不同的事,而一个把字段漂亮列出来的界面很容易让人以为后者也完成了。 信任链验证需要拿到签发者的证书、逐级向上直到一个受信任的根、检查基本约束与密钥用法是否允许它签这张、检查吊销状态(要联网)、检查主机名是否匹配。这些东西浏览器只在 TLS 握手里做(而且用的是它自己的根证书库),网页里做不到。 所以这里给出的是事实:证书里写了什么。它是不是可信,要靠别的手段判断。 ⚠️ 唯一做的一项验证是自签名检查 —— 拿主体与签发者比。两者不同不代表有问题:绝大多数证书都是别人签的,那才是常态。 ⚠️ 过期与「还没生效」永远都报,不受选项影响 —— 那是这张证书最要紧的一件事。全部在浏览器本地完成。
功能
- ⚠️ 「只读不验」的说明放在结果最前面,不藏进 FAQ
- 版本、序列号(可能超过 2⁵³,所以按字符串给)、签名算法
- 主体与签发者的全部属性(CN / O / OU / C / ST / L / emailAddress 等)
- 有效期与剩余天数;⚠️ 已过期或还没生效时明确报出来
- 结果最前面是一条三级结论横幅:有效(带剩余天数)/ 已过期 / 尚未生效 —— 一眼看到答案,不用从十几行明细里找
- 公钥算法与位数(RSA 从 modulus 算出来,EC 由曲线定),以及曲线名
- SAN 逐条列出,DNS / IP / email / URI 分开标;⚠️ IP 按四段写出来,不当文本读
- 密钥用法与扩展密钥用法,逐位解释
- 基本约束:是不是 CA 证书、pathLenConstraint
- SHA-256 与 SHA-1 指纹(十六进制、冒号分隔)
- PEM、裸 base64、十六进制三种输入都认
- ⚠️ `.cer` / `.der` 这类二进制证书文件可以直接拖进来 —— 外壳会把它转成十六进制再解析(这类文件是 DER 编码的二进制,没法粘贴)
- 全部在浏览器本地完成,证书不上传
使用方法
- 把证书内容整段粘进去(`-----BEGIN CERTIFICATE-----` 那一段),或把 `.cer` / `.der` 文件拖进来
- 结果按分组列出:概要 → 主体 → 签发者 → 有效期 → 公钥 → SAN → 密钥用法 → 签名 → 指纹
- 先看最上面那条「只读不验」的说明,再按字段核对
常见问题
- 它验证了这张证书可信吗?
- 没有,而且做不到。 信任链验证要:拿到签发者的证书、逐级向上追到一个受信任的根、检查每一级的基本约束与密钥用法是否允许它签下一级、检查吊销状态(CRL 或 OCSP,都要联网)、再用主机名去匹配 SAN。浏览器只在 TLS 握手里做这些,用的是它自己的根证书库 —— 一个网页既没有那份根证书库,也没有吊销列表。所以这里给的是证书里写了什么,是不是可信要靠别的手段判断。上一轮功能里那个自签名证书生成器也是同理:它生成的证书没有任何浏览器会信任。
- 「自签名:否」是不是说明证书有问题?
- 不是。绝大多数证书都是别人签的(CA 签的),所以「否」是完全正常的。这一项只是拿主体与签发者比了一下 —— 相同说明它是自己签自己(自签名证书,常见于本地开发与内部测试),不同说明上面还有一层。它和「可信」没有关系:一张自签名的证书可以是你自己装进信任库的,一张 CA 签的证书也可能是过期的或者给别的域名的。
- 为什么过期的证书还让我解析?
- 因为「这张证书里写了什么」和「它现在还能不能用」是两个问题,而前者在后者之外还有用途:查签发者是谁、看它当初覆盖了哪些域名、核对指纹、排查一张旧证书是不是当年那张。解析本身不会因为过期而失去意义。不过结果里会明确标出已经过期多少天 —— 那是这张证书最要紧的一件事,不该让人自己从两个日期去算。
- 指纹是干什么用的?
- 它是整张证书的哈希,用来核对这是不是同一张证书。比如服务器上装的证书与本地这份是不是同一张、下载来的证书有没有被改过。SHA-256 是现在用的那个(`openssl x509 -fingerprint -sha256`),SHA-1 也给是因为不少旧文档和管理界面还在印它 —— 但 SHA-1 已经不该用于任何安全判断了。
- 为什么我的证书里没有 SAN?
- 那多半是一张很老的证书。Chrome 从 58 起完全忽略 CN,只看 subjectAltName,所以现在签发的证书都会带 SAN(哪怕只有一个域名,也会把 CN 重复写进去)。一张只有 CN 没有 SAN 的证书在现代浏览器里连不上,而报错只说「名称不匹配」,让人以为是别的问题。如果这是你自己签的,重新签一张带 SAN 的。
相关工具
自签名证书
编码在浏览器本地生成 RSA 密钥对与自签名 X.509 证书,密钥长度 1024–4096 位、签名哈希可选 SHA-256/384/512,自带 SAN 扩展,可直接用于本地开发的 HTTPS 服务。
哈希计算
编码算出文本的 MD5、SHA-1、SHA-256 或 SHA-512 摘要,也可算老系统用的 MD4 与 MD2,中文按 UTF-8 字节计算。全部在本地完成。
JWT 解析与验签
编码把 JWT 拆成 header、payload、signature,支持用密钥验证 HS256/384/512 签名,并把 exp、nbf 换算成可读时间。全部在浏览器本地完成。
Base64 编解码
编码把文本转成 Base64,或把 Base64 还原成文本,中文与 emoji 都按 UTF-8 正确处理。全部在浏览器本地完成,内容不上传。
URL 编解码
编码把中文、空格与符号转义成 %XX,或把 %XX 还原成文本;整条 URL 与单独的参数值要选对方式,选错不会报错,但链接会打不开。全部在浏览器本地完成。
HTML 实体编解码
编码把 < > & 与引号转成 HTML 实体,也能把实体还原成字符,而且只解一遍:&lt; 得到的是 < 而不是尖括号。全部在浏览器本地完成。