IronPDF 操作指南 使用 HSM 签署 PDF 如何使用 C# 使用 HSM 对 PDF 进行数字签名 Curtis Chau 已更新:十一月 3, 2025 下载 IronPDF NuGet 下载 DLL 下载 Windows 安装程序 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在双子座打开 向 Gemini 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 This article was translated from English: Does it need improvement? Translated View the article in English 在很多应用程序中,为 PDF 文档添加签名是一项常见需求。 然而,关键任务型应用需要更高级别的安全性,密钥本身不能被篡改。 使用 .pfx 文件进行正常的签名操作就像拥有您家里的主钥匙一样。 该应用程序需要将密钥加载到您的计算机内存中才能签署文档。 如果计算机本身遭到入侵,密钥可能会被盗。 更安全的替代方案是使用Hardware Security Module (HSM) 。 使用 HSM(例如您的 USB 令牌),私钥在设备内部生成,并且物理上永远不可能离开设备。 这个过程类似于把文件带到银行。 该应用程序提供一个 PIN 码,"银行经理"(HSM)将文件带入金库,用钥匙盖章,然后将盖章后的文件交还给申请人。 关键在于钥匙永远不会离开金库。 这提供了额外的安全保障,因为密钥无法被复制或被盗。 如何使用 HSM 对 PDF 进行数字签名 下载用于使用 HSM 签名 PDF 的 IronPDF C# 库。 导入现有 HSM 或使用其他库进行模拟 创建一个新的 UsbPkcs11HsmSigner 对象 使用 SignAndSave 签名并保存 PDF 文件 使用 PDF 查看器验证 PDF 输出和证书 今天在您的项目中使用 IronPDF,免费试用。 第一步: 免费开始 与 HSM 签约 使用 HSM 进行签名通常需要一个物理设备,例如 USB 令牌,应用程序需要与该设备进行交互。 IronPDF 与这些操作完全兼容,因为该库和标准 HSM 通常使用PKCS#11作为通用 API。 为了演示 IronPDF 与 HSM 的功能,本指南将使用模拟 HSM 而不是物理 HSM。 在生产环境或实际测试环境中,不应使用此模拟环境。 相反,您必须使用您实际的 HSM。 要运行此模拟,您必须首先安装SoftHSM 、 OpenSSL和OpenSC以生成必要的密钥和令牌。 有关如何使用 SoftHSM 的更多信息,请参阅其公开的 GitHub 存储库。 我们将首先根据 HTML 字符串创建 PDF 文件。 在下面的示例中,我们定义了模拟 SoftHSM 的路径和凭据。 这包括提供您创建的 SoftHSM .dll库文件和.crt证书文件的绝对路径。 接下来,我们指定输出路径,在本例中为 output.pdf。 此外,我们定义了三个字符串: hsmTokenLabel 、 hsmPin和hsmKeyLabel 。 这些字符串区分大小写,并且必须与您使用 SoftHSM 生成令牌和证书时创建的凭据完全匹配。 之后,我们初始化UsbPkcs11HsmSigner对象,并将 SoftHSM 库路径、PIN 码、令牌标签和密钥标签作为参数传递。 此外,我们还创建了一个PdfSignatureImage ,将签名的视觉表示添加到文档中。 最后,我们调用SignAndSave ,它使用我们配置的 hsmSigner 对文档进行签名并将其保存到指定的输出路径。 代码 :path=/static-assets/pdf/content-code-examples/how-to/signing-with-hsm.cs using IronPdf; using IronPdf.Signing; using IronSoftware.Pdfium.Signing; using System.Drawing; ChromePdfRenderer renderer = new ChromePdfRenderer(); PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Testing</h1>"); // Define Paths and Credentials string softhsmLibraryPath = @"D:\SoftHSM2\lib\softhsm2-x64.dll"; // These MUST match what you created string hsmTokenLabel = "MyTestToken"; string hsmPin = "123456"; string hsmKeyLabel = "my-key"; // The label for the key *inside* the token // Create the HsmSigner object. UsbPkcs11HsmSigner hsmSigner = new UsbPkcs11HsmSigner( softhsmLibraryPath, hsmPin, hsmTokenLabel, hsmKeyLabel ); // Create the Signature Image string signatureImagePath = "IronSoftware.png"; PdfSignatureImage sigImage = new PdfSignatureImage(signatureImagePath, 0, new Rectangle(50, 50, 150, 150)); // Sign PDF with HSM pdf.SignAndSave("signedWithHSM.pdf", hsmSigner); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel UsbPkcs11HsmSigner还接受两个可选参数,即digestAlgorithm和signingAlgorithm 。 默认情况下,它们设置为SHA256和RSA 。 输出 以下是生成的输出结果。 如您所见,它显示了签名字段,并确认它是使用我们生成的证书签名的。 故障排除 如果在运行代码示例时遇到以下错误,请按照以下故障排除步骤进行调试和验证您的配置。 当程序找不到 SoftHSM 配置文件,或者 .NET 应用程序以 32 位进程运行而 SoftHSM 库为 64 位时,通常会发生 CKR_GENERAL_ERROR 错误。 更改平台目标 导致此错误的一个常见原因是架构不匹配。 您的 C# 应用程序必须作为 64 位进程运行,才能与 64 位 SoftHSM 库 (softhsm2-x64.dll) 匹配。 在 Visual Studio 项目属性中,将平台目标从"Any CPU"或"x86"更改为"x64",以确保兼容性。 设置环境变量 另一个常见的错误原因是程序在 SoftHSM 中找不到.conf文件。 您必须通过设置系统范围的环境变量来告诉库在哪里查找。 创建一个名为SOFTHSM2_CONF的新变量,并将其值设置为配置文件的完整路径(例如,D:\SoftHSM2\etc\softhsm2.conf)。 之后,请记得在进行更改后重启 Visual Studio。 此外,您还可以通过添加以下代码行来验证是否找到了该变量。 Console.WriteLine($"Verifying variable: {Environment.GetEnvironmentVariable("SOFTHSM2_CONF")}"); Console.WriteLine($"Verifying variable: {Environment.GetEnvironmentVariable("SOFTHSM2_CONF")}"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 如果控制台输出为空,则表示程序找不到该环境变量。 您必须进行设置,重启 Visual Studio 或计算机,然后重试。 常见问题解答 什么是硬件安全模块(HSM)?为什么它用于PDF签名? 硬件安全模块 (HSM) 是一种用于管理数字密钥并执行加密和解密功能的物理设备。它用于对 PDF 文件进行签名,通过确保签名过程安全且符合各种标准来增强安全性。 如何在 C# 中配置 HSM 以进行 PDF 签名? 要在 C# 中配置 HSM 以对 PDF 进行签名,您需要使用适当的驱动程序和软件设置 HSM,确保它已连接到您的系统,并使用 IronPDF 在您的 C# 应用程序中配置签名过程。 使用 IronPDF 对 PDF 文件进行数字签名的步骤是什么? 要使用 IronPDF 对 PDF 进行数字签名,您需要先初始化 HSM,在 C# 代码中配置数字签名,然后使用 IronPDF 的签名功能将签名应用到 PDF 文档。 我可以使用 IronPDF 对其他类型的数字证书进行 PDF 签名吗? 是的,IronPDF 支持使用各种类型的数字证书对 PDF 文件进行签名,而不仅仅是 HSM 管理的证书。这包括存储在软件密钥库中的证书。 使用 IronPDF 进行 PDF 签名有哪些好处? IronPDF 提供了一个简单易用的 PDF 签名 API,让您可以轻松地将数字签名集成到 C# 应用程序中。它支持多种证书类型,包括由 HSM 管理的证书,从而确保了灵活性和安全性。 是否可以验证使用 IronPDF 创建的 PDF 签名? 是的,一旦使用 IronPDF 对 PDF 进行签名,就可以使用支持数字签名的标准 PDF 阅读器验证签名,从而确保文档的完整性和真实性。 我需要有编程经验才能使用 IronPDF 进行 PDF 签名吗? 建议具备 C# 编程基础知识才能使用 IronPDF 进行 PDF 签名,因为它涉及编写代码来管理签名过程并适当配置 HSM。 为将 HSM 与 IronPDF 集成,可提供哪些支持? Iron Software 提供文档和技术支持,帮助您将 HSM 与 IronPDF 集成,确保数字签名功能的顺利设置和运行。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 准备开始了吗? Nuget 下载 16,493,056 | Version: 2025.11 刚刚发布 免费 NuGet 下载 总下载量:16,493,056 查看许可证