Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试从我的web应用程序对可下载的exe文件进行签名时存在安全问题_C#_Asp.net_Code Signing_Digital Signature - Fatal编程技术网

C# 尝试从我的web应用程序对可下载的exe文件进行签名时存在安全问题

C# 尝试从我的web应用程序对可下载的exe文件进行签名时存在安全问题,c#,asp.net,code-signing,digital-signature,C#,Asp.net,Code Signing,Digital Signature,让我解释一下我的困境。我正在编写一个ASP.NET web应用程序,它应该允许登录用户下载我的客户端Windows可执行文件。在下载此类文件之前,web应用程序会更改.exe文件中的一些字符串(通过使用用户选择修改exe文件图像) 我现在正在寻找一种方法,用我的代码签名证书对这个可执行文件进行数字签名。问题是要做到这一点,我需要通过Microsoft的运行程序来运行它,该程序需要在运行web应用程序的服务器上安装数字证书,或者提供包含私钥的.pfx文件 这带来了两个问题: 如果我在服务器上安装我

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

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

这带来了两个问题:

  • 如果我在服务器上安装我的数字证书,那么任何人都可以使用它来注销该服务器上的任何可执行文件(我宁愿避免)

  • 如果我选择为我的证书上载导出的个人信息交换(PFX文件),我可以使用密码对其进行保护,但需要使用该密码对我的exe文件进行签名,该文件将需要纯文本形式。所以我需要将密码存储在某个地方,这也不是很安全


  • 有什么建议吗?我该如何克服这些问题?

    如果您计划使用数字2,您可以研究使用来加密您的密码。您仍然需要使用您有两个安全选项的普通密码初始化
    SecureString

  • 通过网页手动提供字符串(使用SSL保护此网页免受MITM攻击)。这是最安全的选择,但它有一个折衷,每次应用程序启动时,您都必须提供密码。或者
  • 在另一台服务器上创建一个web服务,该服务器将返回此普通密码(再次通过SSL进行通信)。这不是完全证明,因为如果web服务的服务器被压缩,您的密码就不存在了。然而,通过将风险分散到多个服务器,黑客更难破坏系统的安全性

  • 我认为唯一的选择是在您信任的服务器上运行签名并从中获取二进制文件。。。(显然没有帮助,所以请评论)。@AlexeiLevenkov:是的。不幸的是,它看起来是这样的:(谢谢。这肯定会降低私钥泄漏的风险。