Delphi 代码和文档签名工具——对比指南
2026 年 Delphi 和 C++ Builder 开发者可用的代码签名和文档签名工具中立调研(附来源引用):sgcSign、Microsoft SignTool、osslsigncode、Azure Trusted Signing、DigiCert Software Trust Manager、jsign、Adobe Acrobat 以及 iText / Apryse PDF SDK。每项功能声明均链接至项目官方文档。
2026 年 Delphi 和 C++ Builder 开发者可用的代码签名和文档签名工具中立调研(附来源引用):sgcSign、Microsoft SignTool、osslsigncode、Azure Trusted Signing、DigiCert Software Trust Manager、jsign、Adobe Acrobat 以及 iText / Apryse PDF SDK。每项功能声明均链接至项目官方文档。
每种选择的一段摘要,并附上官方文档或代码库链接。详细对比见下方矩阵。
eSeGeCe · Commercial
商业 Delphi / C++ Builder / .NET 数字签名套件。以两种互补形态发布,共享相同的签名引擎。组件库在 Delphi 7 至 Delphi 13 中进程内生成 XAdES、PAdES、CAdES 和 ASiC 签名。sgcSign 服务器在文档格式基础上增加自托管 REST 签名守护进程,可对 Authenticode(PE 二进制)、ClickOnce 清单、NuGet 包、VSIX 包和 PowerShell 脚本进行签名。10 个密钥提供者涵盖本地 PFX/PEM、Windows 证书存储、PKCS#11 硬件令牌、AWS KMS、Azure Trusted Signing、Google Cloud KMS、HashiCorp Vault、Certum SimplySign 以及任何 CSC v2 远程 QTSP。21 个预配置国家配置文件支持欧洲电子发票和 eIDAS 劳动合同签名。
Microsoft · Windows SDK EULA (free for development)
Microsoft 随 Windows 10 / Windows 11 SDK 提供的命令行代码签名工具。通过 SIP(主题接口包)机制对 Windows PE 文件(.exe、.dll、.sys、.cab、.cat)以及 AppX/MSIX 包、ClickOnce 清单和 Microsoft Office VBA 项目进行签名和时间戳。从 Windows 证书存储、PKCS#12 文件、智能卡和云签名服务(CSP)提供商读取证书。PDF、XML 和 ETSI XAdES / PAdES / CAdES 签名不在 SignTool 的支持范围内。
Michał Trojnara & contributors · GPL-3.0-or-later (open source)
基于 OpenSSL 构建的开源跨平台 Authenticode 签名工具。对 Microsoft PE 二进制(.exe、.dll、.sys、.cab、.cat)、CAB 档案、AppX/MSIX 包、NuGet 包和脚本文件进行签名。除 Windows 外还可在 Linux、BSD 和 macOS 上运行,这也是该项目诞生的历史原因——使 Linux 构建场无需在 Wine 下运行 SignTool 即可对 Windows 二进制文件签名。支持 RFC 3161 和传统 Authenticode 时间戳;证书来源包括 PKCS#12 文件和 PKCS#11 硬件令牌。
Microsoft · Commercial (Azure subscription, per-month)
Azure 中 Microsoft 的全托管代码签名服务(前身为 Azure Code Signing)。客户不持有签名证书——Microsoft 每三天颁发一个短期证书,并将私钥存储在 Azure HSM 中。为 SignTool、GitHub Actions、Azure Pipelines、Trusted Signing PowerShell 以及专用 dlib(Trusted Signing CSP)提供集成。支持 Windows PE、MSIX、AppX、ClickOnce、VBScript / JScript / PowerShell 脚本签名;PDF / XML 签名不在支持范围内。
DigiCert · Commercial (subscription)
DigiCert 云代码签名平台。私钥存储在 DigiCert 托管的 FIPS 140-2 / 140-3 HSM 中。通过专用工具套件对 Windows PE、Java JAR、Android APK、Linux RPM / DEB、容器镜像、NuGet、Apple Mach-O 二进制文件等进行签名:smctl 签名客户端、SignTool 的 DigiCert KSP / CSP 插件、Jenkins / GitHub Actions / Azure Pipelines 原生集成以及 REST API。文档(PDF、XAdES)通过单独的 DigiCert Document Trust Manager 产品签名。
Emmanuel Bourg · Apache 2.0 (open source)
基于 Java 的开源 Authenticode 签名工具。可作为独立命令、Maven / Gradle / Ant 插件或编程式 Java API 运行。对 Microsoft PE 二进制、MSI 安装包、Microsoft 脚本文件(.ps1、.vbs、.js)、MSIX / AppX 包、CAB 档案和 CAT 目录签名。通过单一 CLI 支持多种云 HSM:AWS KMS、Azure Key Vault、Azure Trusted Signing、Google Cloud KMS、DigiCert ONE、HashiCorp Vault、Oracle Cloud KMS、Yubico YubiHSM、AWS CloudHSM(via PKCS#11)以及任何 PKCS#11 设备。
Adobe · Commercial (subscription)
Adobe Acrobat Pro 和 Adobe Acrobat Sign 是用于签署 PDF 文档的终端用户产品。Acrobat Pro 应用带时间戳的数字签名和认证签名,并验证传入的 PDF 签名;Acrobat Sign(前身为 EchoSign)是一个用于收集外部各方电子签名的云服务。两者均非开发者库:不提供 Delphi / C++ Builder SDK 和命令行签名工具。PAdES 长期验证在验证端通过 Adobe 批准信任列表(AATL)和 EU 信任列表(EUTL)得到支持。
iText Group / Apryse Software (PDFTron) · Commercial (AGPL or commercial license)
两款商业 PDF SDK,广泛用于服务端应用中的无人值守 PDF 签名。iText Core(前身为 iTextSharp)以 AGPL-3.0 或商业许可证提供 Java 和 .NET 版本;com.itextpdf.signatures 命名空间涵盖 PAdES-B-B / B-T / B-LT / B-LTA、MDP(修改检测)认证和可见签名外观。Apryse PDFTron 是商业跨平台 SDK(Java、.NET、C++、Node.js、Python、Go、iOS、Android、Web),提供 PDF.SignatureHandler API 和 PAdES 支持。两家厂商均未提供原生 Delphi 绑定。
勾选()表示项目文档记载了原生支持;横线(—)表示项目未原生提供;波浪线(~)表示部分支持 / 需借助插件 / 未经明确记录——详见来源部分的核实说明。
| 功能 | sgcSign | Microsoft SignTool | osslsigncode | Azure Trusted Signing | DigiCert Software Trust Manager | jsign | Adobe Acrobat / Adobe Sign | iText / Apryse |
|---|---|---|---|---|---|---|---|---|
| 签署 Windows 二进制文件 Authenticode 适用于 .exe / .dll / .sys / .ocx | — | — | ||||||
| 签署 ClickOnce 清单 .application / .manifest 文件 | ~ | ~ | — | — | ||||
| 签署 NuGet / VSIX 包 .nupkg / .vsix 容器 | ~ | ~ | ~ | ~ | — | — | ||
| 签署移动端包(APK / IPA) Android APK 或 iOS IPA 包 | — | — | — | — | — | — | — | |
| 签署 PDF 文档(PAdES) ETSI EN 319 142,与 Adobe 兼容 | — | — | — | ~ | — | |||
| 签署 Office 文档 Word / Excel / PowerPoint docx / xlsx / pptx | — | ~ | — | — | — | — | — | — |
| 签署 XML 文档(XAdES) ETSI EN 319 132 | — | — | — | ~ | — | — | ~ | |
| 原生 Delphi / C++ Builder API 一流 VCL / FMX 组件 | — | — | — | — | — | — | — | |
| 跨平台工具 可在 Windows、Linux 和 macOS 上运行 | ~ | — | ~ | |||||
| 云 HSM 支持 AWS / Azure / GCP / HashiCorp / CSC v2 | ~ | ~ | ~ | ~ | ||||
| eIDAS / 国家配置文件预设 按国家的签名预设(VeriFactu、KSeF 等) | — | — | — | ~ | — | ~ | ~ | |
| 独立命令行工具 包含命令行客户端 | ~ | — | — | |||||
| 库 / SDK 供应用程序调用的编程式 API | — | — | ~ | ~ | ~ | — | ||
| 积极维护 过去 12~18 个月内有发布或标记活动 | ||||||||
| 许可证模式 许可证类型 | Commercial | Windows SDK EULA | GPL-3.0-or-later | Commercial (Azure subscription) | Commercial (subscription) | Apache 2.0 | Commercial (subscription) | AGPL or Commercial (iText) / Commercial (Apryse) |
每种选择都有其适用受众。正确的选择取决于您签署的是代码、文档还是两者兼有、托管签名逻辑的运行时、您的密钥托管偏好以及许可证偏好。
当您使用 Delphi 7~13、C++ Builder 或 .NET 构建应用程序,并希望通过同一密钥提供者抽象层同时生成文档签名(XAdES、PAdES、CAdES、ASiC)和代码签名(Authenticode、ClickOnce、NuGet、VSIX、PowerShell)时,请选择 sgcSign。21 个预配置国家配置文件涵盖欧洲电子发票和 eIDAS 劳动合同签名;服务器形态可集中管理构建场的密钥托管。
当您签署的构件均为 Windows 二进制文件(PE / .cab / AppX / MSIX)且构建主机为 Windows 时,请选择 Microsoft SignTool。SignTool 是与所有提供 CSP / KSP 的云签名服务(DigiCert KeyLocker、Azure Trusted Signing、GlobalSign Atlas 等)配套使用的参考命令行工具,且 Windows SDK 安装免费。
当构建主机运行 Linux、BSD 或 macOS,且待签署构件为 Windows 二进制文件(CAB 档案、PE 文件、MSIX 包或 NuGet 包)时,请选择 osslsigncode。GPL-3.0 许可证可自然融入已使用 OpenSSL 和 PKCS#11 硬件令牌的 CI 流水线。
当您需要全托管的 Windows 代码签名服务(由 Microsoft 持有证书和 HSM)、团队已在 Azure 上运营,且待签署构件为 Windows PE、MSIX、AppX、ClickOnce 或 PowerShell 时,请选择 Azure Trusted Signing。短期证书模型消除了持有代码签名证书的续期和身份验证负担。
当您已购买 DigiCert 代码签名证书,并希望将其存储在 DigiCert 的 FIPS 认证 HSM 中,通过统一界面管理续期、吊销和审计时,请选择 DigiCert Software Trust Manager。原生 smctl 客户端和 SignTool KSP 插件可在一套工作流中覆盖 Windows 二进制文件、Java JAR、容器镜像和移动端包。
当构建流水线已运行在 JVM 工具链(Maven、Gradle、Ant 或基于 JDK 的 Jenkins)上,需要一个 CLI 驱动所有主流云 HSM,且待签署构件为 Windows PE / MSI / MSIX / 脚本文件时,请选择 jsign。Apache 2.0 许可证可完美融入闭源构建流程。
当签名工作流为交互式人工操作——由人工在 Acrobat 中打开 PDF、添加可见签名并发送文件时,请选择 Adobe Acrobat / Adobe Sign。Acrobat Sign 将该模式扩展至通过电子邮件收集多方签名的场景。无需构建时或服务端自动化。
当应用程序基于 Java、.NET、C++ 或其他受支持的运行时构建,且 PDF 是主要文档格式时,请选择 iText 或 Apryse PDFTron。两款 SDK 均具备成熟的 PAdES 支持、签名之外丰富的 PDF 功能(表单、编辑、渲染),并拥有广泛的企业级参考案例。
从上述任一选项切换时的差异简要说明。无意贬低——仅做实用对比。
SignTool 仅涵盖 Windows 代码签名。如果您的应用程序已在构建脚本中调用 SignTool,sgcSign Server 提供一个 REST 签名端点,接收二进制文件和提供者名称并返回已签名的构件——工作流不变,但 Authenticode 操作集中运行,审计追踪、审批工作流和按项目配额均集中于一处。文档签名(XAdES / PAdES / CAdES / ASiC)也可通过同一守护进程使用。
如果您的构建流水线使用 osslsigncode 从 Linux 构建代理对 Windows 二进制文件进行 Authenticode 签名,sgcSign Server 通过 HTTPS API 提供相同的流程,并在您可能已使用的 PKCS#11 路径基础上增加了对 AWS KMS、Azure Trusted Signing、Google Cloud KMS 和 HashiCorp Vault 的一流支持。文档格式(PDF / XML / CMS)也可通过同一端点使用。
sgcSign 将 Azure Trusted Signing 作为其十个密钥提供者之一(TsgcAzureTrustedSigningProvider),因此 Delphi 或 C++ Builder 应用程序可直接驱动 Azure Trusted Signing——相同的私钥、相同的 Microsoft 颁发的公信证书,但签名器在进程内运行。如果还需要 PDF / XAdES / CAdES 文档签名,同一密钥提供者也可服务于文档签名器。
如果您目前使用 smctl 对 Windows 二进制文件签名,sgcSign Server 可通过 DigiCert 提供的 PKCS#11 驱动同一代码签名证书,并在此基础上增加一流的 XAdES / PAdES / CAdES 文档签名支持——在同一守护进程中同时需要代码和文档签名时尤为实用。
jsign 涵盖多种云 HSM 的 Windows 代码签名。sgcSign Server 在云 HSM 矩阵(AWS KMS、Azure Trusted Signing、Google Cloud KMS、HashiCorp Vault)上与其重叠,并增加了 ETSI 文档签名(PAdES、XAdES、CAdES、ASiC)以及 21 个国家配置文件——在同一密钥需要同时生成代码和文档签名时尤为实用。
Adobe Acrobat 是终端用户工具,而非开发者库。如果您目前要求终端用户在 Acrobat 中签署 PDF,现在希望改为无人值守的服务端 PAdES 签名,sgcSign 提供 PDF 签名器(TsgcPAdESSigner)以及时间戳和 OCSP 客户端,可从构建流水线或后端服务生成 PAdES-T 和 PAdES-LT 签名。
iText 和 Apryse 不提供原生 Delphi 绑定,因此 Delphi 应用程序通常通过薄桥接层封装其 .NET 或 Java SDK。sgcSign 从原生 Delphi 和 C++ Builder 代码生成 PAdES-B-B / B-T / B-LT 签名——桥接层消失,同一密钥提供者链在签署 PDF 的同时也可签署 XML、CMS 和 Authenticode 构件。
上方矩阵中的每个单元格均可追溯至以下官方文档页面、代码仓库或发布说明之一。所有 URL 均已在撰写时进行过 HEAD 检查。