
什么是PDF数字签名验证?
PDF文档上的数字签名提供密码学证明,涵盖两个方面:
- 身份:文档由声称的签名者签署
- 完整性:文档自签署后未被修改
与扫描的手写签名(仅图像)不同,数字签名是基于公钥密码学的数学构造,提供强大且可验证的保证。

PDF数字签名的工作原理
签署过程
- 计算PDF内容的哈希值(例如SHA-256)
- 使用签名者的私钥加密哈希值
- 将加密后的哈希值(签名)嵌入PDF中
- 签名者的证书(包含其公钥)也存储在PDF中
验证过程
- 从PDF中提取签名和证书
- 使用证书中的公钥解密签名
- 独立计算当前PDF内容的哈希值
- 比较:如果两个哈希值匹配,则签名有效且文档未被更改
信任链
证书本身不能证明身份——任何人都可以生成证书。信任通过证书颁发机构(CA)链建立:
- 您的证书由中间CA签名
- 中间CA的证书由根CA签名
- 根CA预安装在操作系统和浏览器中,被视为受信任
PDF签名的类型
批准签名
在某个时间点签署文档。之后可以添加其他签名(每个签名覆盖签署时的内容)。
认证签名(DocMDP)
控制签署后允许对文档进行的更改:
- 级别1:不允许任何更改
- 级别2:仅允许填写表单和添加注释
- 级别3:允许填写表单、添加注释和添加页面

不可见签名
密码学签名,文档中没有可见的图形元素。
可见签名
同时包含密码学签名和可见表示(通常是签名图像、姓名、日期和原因)。
PDF签名验证状态
验证PDF签名时,结果可以是:
有效
- 签名密码学验证通过
- 证书链受信任
- 签署后无修改
有效但存在问题
- 签名数学上有效
- 证书可能已过期、不受信任或被吊销
- 文档可能以允许的方式被修改(批准的更改)
无效
- 文档在签署后被修改
- 计算出的哈希值与签名不匹配
未知
- 无法验证(需要互联网访问进行OCSP/CRL检查)
- 证书链指向不受信任的根

长期验证(LTV)
标准签名可能随着证书过期而变得无法验证。**长期验证(LTV)**将所有验证信息嵌入PDF本身:
- 证书链
- OCSP响应(证书有效性证明)
- 来自受信任时间戳机构的时间戳
启用LTV的PDF可以在签署后数年或数十年无需互联网访问即可验证。
PAdES、CAdES和XAdES标准
不同场景使用不同的签名标准:
- PAdES(PDF高级电子签名):PDF签名的欧洲标准,欧盟法律合规要求
- CAdES:适用于任意数据,不仅限于PDF
- XAdES:适用于XML文档
欧盟的eIDAS法规定义了签名级别:
- SES(简单):基本数字签名
- AdES(高级):签名者身份与签名关联
- QES(合格):最高法律效力,等同于欧盟法律中的手写签名
常见签名问题
自签名证书
许多PDF签名工具允许创建无需CA参与的证书。这些是“自签名”证书——证书由其自己的私钥签名。它们提供完整性保证,但不提供身份保证。
过期证书
如果签署时证书有效,且签名被正确时间戳,则签名仍然有效。LTV正确处理此情况。没有LTV,过期证书可能导致错误的“无效”警告。
增量更新
PDF可以通过追加新数据(增量更新)进行修改,而不会覆盖原始签名内容。部分签名仅覆盖原始内容;在审查后来修改的签名PDF时,理解这一点很重要。
使用PDF签名检查器
我们的工具:
- 上传PDF:通过拖放或文件选择器
- 提取所有签名:从文档中提取
- 验证每个签名:密码学验证
- 显示证书详情:颁发者、主题、有效期
- 指示信任状态:受信任CA、自签名或未知
- 报告修改状态:文档签署后是否被更改
- 客户端处理:您的PDF永远不会上传到服务器
用于验证已签署的合同、检查证书签名的文档、审计PDF完整性,以及理解数字签名对文档的实际证明作用。