
【免费下载链接】coreA modern PDF library for TypeScript. Parse, modify, and generate PDFs with a clean, intuitive API.项目地址https://gitcode.com/gh_mirrors/core587/core点击查看免费下载LibPDF 是一个面向 TypeScript 的现代 PDF 库提供解析、修改与生成 PDF 的简洁直观 API也内置了完整的 PAdES 数字签名能力。本文面向新手讲解 PDF 签名长期有效性为什么普通签名会失效、B-LT 与 B-LTA 签名如何做到永不过期以及验证数据是如何存入 DSS文档安全存储的。为什么普通 PDF 签名会过期一个常见的困惑是我明明用合法证书签了名为什么几年后 PDF 阅读器却提示签名状态未知原因藏在签名验证的链条里证书有效期签名证书通常只有 13 年有效期过期后阅读器无法确认签名时证书是否有效OCSP/CRL 服务下线验证证书是否被吊销需要访问 CA 的在线服务这些服务可能随时间关闭中间证书缺失当年能自动补齐的证书链几年后可能不再可用 换句话说签名能不能被信任取决于验证数据是否永远在线。长期有效性LTV, Long-Term Validation的核心思路就是在签名那一刻把未来验证所需的一切证据一次性冻结进 PDF 文件里让文件自己成为证据。PAdES 签名级别一览B-B / B-T / B-LT / B-LTALibPDF 遵循 PAdESPDF 高级电子签名标准的四个签名等级在签名时通过level选项选择级别名称验证数据适用场景B-B基础签名仅证书链简单审批短期使用B-T带时间戳签名证书链 TSA 时间戳需要证明何时签署B-LT长期验证签名额外内嵌 OCSP 响应、CRL、完整证书链DSS 存储证书过期后仍可验证B-LTA档案级签名B-LT 文档时间戳Document Timestamp十年以上长期归档 可以理解为B-T 证明我在这个时间签过B-LT 额外证明签名时证书是好的、没被吊销B-LTA 则连验证证据本身也被时间戳封印实现真正的无限期验证。各级别的类型定义位于 src/signatures/types.ts官方签名指南见 content/docs/guides/signatures/index.mdx。B-LT 长期验证签名时自动打包证据当你以 B-LT 级别签名时LibPDF 会在签名过程中自动完成三件事时间戳向时间戳权威机构TSA申请 RFC 3161 时间戳令牌证明签署时间收集吊销证据为证书链中的每一张证书获取当时的 OCSP 响应或 CRL证书吊销列表写入 DSS把证书、OCSP 响应、CRL 全部打包进 PDF 内部的 DSS 结构并记录哪个证据属于哪个签名这个收集过程由 LTV 数据采集器完成它对签名和 TSL 时间戳令牌统一处理内部还带 OCSP/CRL 缓存——多位签署人共享同一 CA 时不会重复请求网络见 src/signatures/ltv/gatherer.ts。const tsa new HttpTimestampAuthority(https://freetsa.org/tsr); const { bytes, warnings } await pdf.sign({ signer, level: B-LT, // 自动获取 OCSP/CRL 并写入 DSS timestampAuthority: tsa, });运行后即使签名字体证书几年后过期、CA 的在线服务下线验证器依然可以离线确认签名的有效性。完整可运行示例见 examples/07-signatures/sign-with-long-term-validation.ts——它还演示了一个很好的容错思路B-LT 因网络失败时逐级回退到 B-T、B-B。DSS 文档安全存储验证数据的家DSSDocument Security Store文档安全存储是 PDF 2.0 规范第 12.8.4.3 节定义的专用字典就是存放长期验证数据的地方。它包含四类内容/Certs验证所需的完整证书链根证书、中间证书、签署证书/OCSPs签署时刻各证书的 OCSP 吊销状态响应/CRLs证书吊销列表/VRI验证关联信息用签名内容字节的 SHA-1 哈希作为键精确指明这组证据对应哪一枚签名LibPDF 的 DSS 构建器负责创建和合并DSS多枚签名先后写入时证书、OCSP、CRL 都按 SHA-1 去重复用不会越签文件越大实现见 src/signatures/ltv/dss-builder.tsVRI 键的计算规则在 src/signatures/ltv/vri.ts。 对新手只需记住一点看到 PDF 里有 DSS就说明这是一枚自带证据的长期有效签名。B-LTA 档案级签名给证据本身再盖一个时间戳B-LT 有一个理论上的缺口DSS 里的 OCSP 响应本身也有有效期。如果归档期限非常长十年、二十年到验证时 OCSP 响应本身也可能过期。B-LTA 的解法是追加一枚文档时间戳/Type /DocTimeStamp它的ByteRange覆盖整个文档包括已有的签名和 DSS相当于 TSA 对整个文件状态拍照存档只要时间戳令牌本身可信其证书链和吊销数据也会内嵌就能证明验证证据在 T 时刻已存在从而支持无限期的再时间戳滚动const { bytes } await pdf.sign({ signer, level: B-LTA, // B-LT 全部能力 文档时间戳 timestampAuthority: tsa, });文档时间戳的创建逻辑见 src/signatures/timestamp.ts示例项目见 examples/07-signatures/sign-archival.ts。多人签署后统一归档addValidationData 与 addArchivalData实际业务中更常见的流程是多位签署人先后签字用轻量的 B-T 级别快且每人不用查吊销状态全部签完后再一次性升级为档案级。LibPDF 为此提供了三个高层方法实现在 src/api/pdf-signature.ts方法作用等效结果pdf.addValidationData()为文档内所有已签签名批量收集 LTV 数据写入单个 DSS 增量更新B-T → B-LTpdf.addTimestamp()追加覆盖全文档的 DocTimeStamp封印此前所有签名加上档案时间戳pdf.addArchivalData()一步完成上面两步并内嵌时间戳自身的验证数据完整 B-LTA 归档// 所有签署人签完后一次调用完成档案级封存 const tsa new HttpTimestampAuthority(https://freetsa.org/tsr); const { bytes, warnings, signatureCount } await pdf.addArchivalData({ timestampAuthority: tsa, });这些方法只在能增量保存的文档上工作如果文档无法增量更新如线性化文档会抛出SignatureError拒绝执行——因为全量重写会使所有现有签名作废。集成测试用例可参考 src/integration/signatures/lta-finalization.test.ts。常见陷阱与最佳实践⚠️必须增量保存签名后的文档只能追加更新任何全量重写都会让签名失效LTV 需要网络B-LT/B-LTA 要在签名时访问 OCSP/CRL 服务器离线环境请提前规划失败后别复用实例若addTimestamp()等方法在部分进度后抛错如 TSA 不可达内存中的 PDF 实例可能已不同步请丢弃该实例用PDF.load()从最后已知的字节重新加载TSA 选择生产环境建议使用证书提供商的官方时间戳服务器DigiCert、Sectigo 等免费服务如 FreeTSA 适合开发测试归档再时间戳B-LTA 文档随时间推移可由验证器追加新的文档时间戳实现滚动续命快速上手清单用P12Signer或CryptoKeySigner加载证书支持 Google KMS 企业密钥选择级别短期审批用 B-T需要长期验证直接用 B-LT多人签署流程最后调用addArchivalData()一键升级到 B-LTA用 Adobe Reader 打开确认签名状态检查 warnings 输出更多签名玩法P12 签名、KMS 签名、时间戳服务可查阅官方指南 content/docs/guides/signatures/index.mdx 与示例目录 examples/07-signatures/。赞分享【免费下载链接】coreA modern PDF library for TypeScript. Parse, modify, and generate PDFs with a clean, intuitive API.项目地址https://gitcode.com/gh_mirrors/core587/core点击查看免费下载相关推荐OneUptime SSL 证书监控完整指南证书有效期、自签名与有效性验证实战OneUptime SSL 证书监控完整指南证书有效期、自签名与有效性验证实战 SSL/TLS 证书过期是导致生产服务中断的最常见原因之一。OneUptime可观测性后端运维前端云原生微服务AI AgentBentoPDF 数字签名验证实战在浏览器中校验 PDF 签名完整性、证书有效期与信任链BentoPDF 数字签名验证实战在浏览器中校验 PDF 签名完整性、证书有效期与信任链 本文以 BentoPDFPrivacy First PDF Too前端Mermaid Live Editor完全指南免费在线图表编辑器的终极使用教程Mermaid Live Editor完全指南免费在线图表编辑器的终极使用教程 还在为复杂的图表制作工具而烦恼吗想要一个简单、免费且功能强大的 在线图表编辑前端开发者工具数据可视化创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考