【问题标题】:Certificate and digital signing证书和数字签名
【发布时间】:2019-11-07 16:05:40
【问题描述】:

我需要一些关于如何在我们正在开发的基于 Web 的文档分发系统中实现文档签名的指导。 在最简单的情况下,用户 A 将登录网站并创建一个数据包。可以将 Word/Pdfs 添加到包中。用户 A 将使用数字证书签署此文件。用户 A 可以将其分配给其他用户以查看文档。他们也可以签署文件。

现在我知道如何使用 C# 对数据进行数字签名了。我不知道每个用户登录网站时如何生成证书。该站点由 DigiCert 证书保护。

我应该采取什么方法为每个用户生成数字证书?一旦我有了一个 .pfx 文件,我相信我可以将它存储在数据库中并使用它。任何有关此事的指导将不胜感激!

谢谢

【问题讨论】:

  • 在我看来,该应用程序是为安全文档签名而设计的,但您拥有系统中涉及的所有密钥,这让我感到很奇怪。 user 不应该持有自己的密钥吗?您不应该为人们存储 PFX 文件。
  • 您将设置一个带有注册机构的证书机构。这不是一个编程问题。
  • @LukeJoshuaPark 感谢您的意见。所以文档应该在本地签名然后上传到网站?
  • @MaartenBodewes DigiCert 是 CA 对吗?
  • 呵呵,我在评论中写的是实体而不是实体 :)

标签: encryption digital


【解决方案1】:

我要为每个用户生成一个数字证书吗?一旦我有了一个 .pfx 文件,我相信我可以将它存储在数据库中并使用它..

这就是我所说的“幼稚方法”(读起来很简单)。您考虑为 Web 应用程序中的用户存储(甚至可能生成)密钥对。这种方法的最大问题是,对系统具有低级别访问权限的人(管理员)或者如果数据库泄漏,则可以访问用户的私钥。为了有一个安全的解决方案(考虑签名),私钥不能离开它的用户

在 Web 环境中做任何事情,您可以考虑使用 SubtleCrypto 或其他客户端站点库,但是目前我认为没有合理的方法来管理纯 Web 应用程序的密钥。也许您可以将用户的密钥和证书存储在localStorage 中,但它为恶意脚本泄露密钥留下了一些空间。

许多现实生活中的安全解决方案都使用安全模块(例如密码卡),不幸的是 Web 库无法访问这些模块(通常以 pkcs11 接口公开)。作为一种解决方案,签名部分通常在用户计算机上作为自定义代码运行。在它之前是 ActiveX、Applet、.. 现在它通常是作为绑定到“localhost”的 web 服务器公开的“驱动程序”,因此 signig 服务可以用作 web 应用程序的 web api。

【讨论】:

  • 感谢您的宝贵意见!
猜你喜欢
  • 2016-06-12
  • 2013-05-26
  • 2011-08-17
  • 2011-09-22
  • 2014-03-16
  • 2019-10-01
  • 2011-02-22
  • 2015-06-29
  • 1970-01-01
相关资源
最近更新 更多