asp.net - 在服务器上对 PDF 进行数字签名

标签 asp.net pdf sign

我有一个使用 ASP.NET (C#) 在服务器上生成 PDF 的项目。但现在我们需要客户能够对这些 PDF 进行数字签名。据我所见,必须在客户端使用小程序对文档进行签名,因为在服务器中我无法访问证书的私钥,但正如我上面所说,PDF 是在服务器上生成的,我把它们留在那里。

所以,我需要的是在服务器上对 PDF 进行数字签名,获取客户的证书。

谢谢

最佳答案

由于提取和发送客户端的私钥是不可能或无论如何都不安全的,因此要在服务器上签署 pdf,您需要与客户端建立“ session ”并让他们计算签名。

步骤应该是这样的:

  • 客户发送他的公共(public)证书以嵌入到签名的 pdf 中
  • 服务器生成pdf,嵌入证书并计算哈希(例如:sha1)
  • 服务器将哈希发送到客户端小程序
  • 小程序用她的私钥计算数字签名
  • 小程序将签名发送到服务器
  • 服务器嵌入数字签名并关闭 pdf。

  • 要使用 itext 执行此操作,您必须在嵌入证书后使用 preclose 方法,以便能够计算最终文档的 sha1 哈希值。
    然后在预先关闭 pdf 后,您必须计算 pdf 的哈希并将其发送给客户端。
    注意:在预先关闭时,您必须将文档保存在内存中,例如在服务器 session 中。
    要生成 pdf,嵌入证书并准备文档,您可以使用 itextsharp,itext 库的 c# 端口。要计算哈希并创建 pkcs7 信封,您可以使用 .net crypto api。
    希望这可以帮助。

    关于asp.net - 在服务器上对 PDF 进行数字签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5626639/

    相关文章:

    jquery - 将 css 样式添加到动态生成的元素(jquery、css)

    c# - 使用 iTextSharp 制作两个相同的 PDF

    asp.net - 值 'AddOrder' 无效

    c# - 如何调整 "is a type but is used like a variable"?

    pdf - 使用哪种类型的注释(或其他对象)?

    C# MSSQL base64 插入和选择。数据不同

    git - 如何在多台机器上签署 git 提交?

    android - 使用不同的 keystore 辞职 apk

    java - 使用 ED25519 key 和 Bouncy CaSTLe (Java) 签名/验证 Json

    asp.net - ApplicationClass Documents.Open 为 64 位系统上的 ASP.NET 站点返回 null