3

让我解释一下我的困境。我正在编写一个 ASP.NET Web 应用程序,它应该让登录用户下载我的客户端 Windows 可执行文件。在下载此类文件之前,Web 应用程序会更改 .exe 文件中的一些字符串(通过使用用户选择修改 exe 文件图像)。

我现在正在研究一种使用我的代码签名证书对这个可执行文件进行数字签名的方法。问题是,要做到这一点,我需要通过 Microsoft 的signtool运行它,该工具需要在运行Web 应用程序的服务器上安装数字证书,或者我提供包含我的私钥的 .pfx 文件。

这带来了两个问题:

  1. 如果我在服务器上安装我的数字证书,那么任何人都可以使用它从该服务器上签署任何可执行文件(我希望避免这种情况。)

  2. 如果我选择为我的证书上传导出的个人信息交换(PFX 文件),我可以用密码保护它,但signtool将需要该密码来签署我的 exe 文件,它需要以纯文本形式。所以我需要将密码存储在某个地方,这也不是那么安全。

有什么建议,我该如何克服这些?

4

1 回答 1

1

如果您打算使用数字 2,您可以考虑使用SecureString来加密您的密码。您仍然需要SecureString使用有两个安全选项的普通密码进行初始化。

  1. 通过网页手动提供字符串(使用 SSL 保护此页面免受 MITM 攻击)。这是最安全的选项,但它有一个权衡,即您必须在每次应用程序启动时提供密码。或者,
  2. 在另一台服务器上创建一个 Web 服务,该服务将返回此纯密码(再次通过 SSL 进行通信)。这不是完全的证据,因为如果 Web 服务的服务器被入侵,您的密码就会消失。但是,通过将风险分散到多台服务器上,黑客就更难以破坏系统的安全性。
于 2013-08-12T05:23:46.187 回答