返回

SSL 证书与 PEM 证书包解析

加密与哈希

正在载入

正在加载工具

正在准备工具,暂时无法估算剩余时间。

本工具的全部运算都发生在你的浏览器中,输入内容不会发送到任何服务器。

关于这个工具

在浏览器中查看单张证书或 PEM 证书包。逐项显示主体、颁发者、有效期、公钥属性及指纹。候选颁发者仅通过名称编码匹配,不证明签名或信任。

常见用途

  • 不上传证书即可发现已过期或尚未生效的条目。
  • 检查叶证书在前的证书包,发现候选颁发者缺失、歧义、重复或顺序问题。
  • 保留单证书工作流,同时查看 RSA、命名曲线 EC 及支持的现代公钥元数据。

使用方法

  1. 1.粘贴一个或多个 CERTIFICATE PEM 块;单张证书也可使用 DER 十六进制模式,或选择证书文件。
  2. 2.运行检查并逐项阅读字段、格式错误与日期警告;编号遵循原始输入顺序。
  3. 3.检查候选颁发者编号与顺序诊断。同名或自颁发不代表自签名,也不代表受信任。 确认当前结果与检查范围后复制有界报告。修改输入或切换模式会使旧结果失效。

合成输入实测示例

叶证书后紧跟名称匹配候选

-----BEGIN CERTIFICATE-----
MHcwawIBAjAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBM
ZWFmMAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MHcwawIBATAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBS
b290MAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
{"subjects":["CN=Synthetic Leaf","CN=Synthetic Root"],"statuses":["withinDates","withinDates"],"candidates":[[1],[]],"issues":[]}

这些是带有虚构签名的合成元数据,不是可用证书链。以 2026-01-01 为当前时间,候选索引 1 紧跟叶证书索引 0;名称匹配不验证签名。示例数组索引从 0 开始,界面证书编号从 1 开始。

反向排列时发现前置候选

-----BEGIN CERTIFICATE-----
MHcwawIBATAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBS
b290MAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MHcwawIBAjAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBM
ZWFmMAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
{"subjects":["CN=Synthetic Root","CN=Synthetic Leaf"],"statuses":["withinDates","withinDates"],"candidates":[[],[0]],"issues":["orderMismatch"]}

索引 1 的叶证书在前方找到候选 0。orderMismatch 提醒人工检查,不会自动重排或认定路径已验证。报告中的全部签名均未验证。

缺失的颁发者仍保持未解决

-----BEGIN CERTIFICATE-----
MHcwawIBAjAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBM
ZWFmMAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
{"subjects":["CN=Synthetic Leaf"],"statuses":["withinDates"],"candidates":[[]],"issues":["missingIssuer"]}

输入只有叶证书。missingIssuer 表示本地没有找到 DER 字节完全相同的主体名称,不表示该颁发者必然无效或在其它地方不存在。工具不会访问任何 URL。

识别完全重复的公共证书

-----BEGIN CERTIFICATE-----
MHcwawIBATAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBS
b290MAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MHcwawIBATAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBS
b290MAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
{"subjects":["CN=Synthetic Root","CN=Synthetic Root"],"statuses":["withinDates","withinDates"],"candidates":[[1],[0]],"issues":["duplicateCertificate"]}

第二张公共证书与第一张 DER 字节完全相同。duplicateCertificate 标记重复;同名候选关系仍不代表任何信任或签名判断。

多个同名证书保持歧义

-----BEGIN CERTIFICATE-----
MHcwawIBAjAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBM
ZWFmMAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MHcwawIBATAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBS
b290MAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MHcwawIBAzAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBS
b290MAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
{"subjects":["CN=Synthetic Leaf","CN=Synthetic Root","CN=Synthetic Root"],"statuses":["withinDates","withinDates","withinDates"],"candidates":[[1,2],[2],[1]],"issues":["ambiguousIssuer"]}

两张不同的合成证书使用完全相同的主体名称编码,因此均是叶证书的颁发者候选。ambiguousIssuer 避免误报唯一颁发者。

格式错误条目保留原始位置

-----BEGIN CERTIFICATE-----
MHcwawIBAjAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBM
ZWFmMAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MAA=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MHcwawIBATAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBS
b290MAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
{"subjects":["CN=Synthetic Leaf",null,"CN=Synthetic Root"],"statuses":["withinDates","certificateInvalid","withinDates"],"candidates":[[2],[]],"issues":["malformedEntry","orderMismatch"]}

中间的空 DER SEQUENCE 不是证书,错误保留在索引 1。候选索引 2 仍被列出;orderMismatch 提示它并未紧跟叶证书。

在固定未来设备时间下已过期

-----BEGIN CERTIFICATE-----
MHcwawIBATAEBgIqAzAZMRcwFQYDVQQDDA5TeW50aGV0aWMgUm9vdDAeFw0yMDAx
MDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBkxFzAVBgNVBAMMDlN5bnRoZXRpYyBS
b290MAowBAYCKgMDAgABMAQGAioDAwIAAQ==
-----END CERTIFICATE-----
{"subjects":["CN=Synthetic Root"],"statuses":["expired"],"candidates":[[]],"issues":[]}

此例将设备时间固定为 2040-01-01,已经晚于编码中的 2030-01-01 截止时间。expired 只描述日期,不意味着额外检查了签名或吊销。

私钥块标签会使整个输入被拒绝

-----BEGIN PRIVATE KEY-----
SYNTHETIC-NONKEY-SENTINEL
-----END PRIVATE KEY-----
{"subjects":[],"statuses":[],"candidates":[],"issues":["pemUnsupportedBlock"]}

块内容是明确虚构的非密钥标记。禁止的标签会以固定诊断拒绝整个输入;报告不会包含该内容,也不会尝试解析真实私钥。

限制与说明

  • 最多 32 张证书、2 MiB 输入,并限制 DER 深度、节点数及输出。严格的纯证书 PEM 输入拒绝私钥、其它块类型、外围说明文字与错误边界。
  • 候选关系要求颁发者与主体名称的 DER 字节完全相同。同义但编码不同的名称可能不匹配;无关证书的同名也可能匹配。不检查签名、CA/密钥用途、名称约束、域名、系统信任、完整 PKIX 路径或吊销状态。
  • 不会访问 AIA、OCSP、CRL 或其它证书 URL。输入仅在本地处理且不持久化。日期状态使用设备时钟;指纹依赖 Web Crypto。
  • 未知算法可显示标识符而不解释参数。本工具是有界字段与结构检查器,不是完整 ASN.1 模式验证器,也不应据此作出安全决策。

常见问题

匹配颁发者或“自颁发”代表证书链受信任吗?

不代表。匹配比较名称编码,不验证签名或信任根。自颁发仅表示主体与颁发者名称相同,不能证明自签名。信任判断应使用独立且配置正确的证书验证器。

一张证书格式错误时怎么办?

报告会标记该条目并保留其它可解析条目。PEM 边界错误或禁止的块类型会拒绝整个输入。诊断不会包含私钥块内容。

在有效期内能证明什么?

仅表明设备时钟落在证书编码的时间区间内,不能证明签名、未吊销、域名所有权或任何依赖方信任该证书。

相关工具