从网站下载后文件上的数字签名消失了

时间:2012-09-26 14:49:06

标签: asp.net download digital-signature authenticode

我开发了一个软件应用程序,并使用从Verisign(现为赛门铁克)获得的Authenticode证书对我的安装程序进行了数字签名。我使用Visual Studio附带的signtool.exe实用程序签署了安装程序(.exe)。当我运行安装程序时,它现在说我的公司名称是发布者,而不是“未知”,这是我的目标....成功!

然后我在我的网站上发布了安装程序文件,以便分发给我的客户。该文件由asp:按钮提供,该按钮在单击时执行以下代码:

Response.ContentType = "application/octet-stream";

Response.AppendHeader("Content-Disposition", "attachment; filename=CP11Full_x86.exe");

Response.TransmitFile(Server.MapPath("~/Software/ContainmentPlanner/Files/CP11Full_x86.exe"));

HttpContext.Current.ApplicationInstance.CompleteRequest(); 

当我从我的网站下载安装程序文件并运行它时,发布者字段显示“未知”!!! 然后我使用FTP客户端将文件直接从我的Web服务器复制到我的计算机,并且下载的文件是HAD THE SIGNATURE(即没有显示发布者:未知),所以显然Web服务器上的文件很好。它必须是通过网站下载文件的过程,剥离或使数字签名无效。我尝试了Firefox和IE,并得到了相同的结果。

我做错了什么?在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

可能是某些HTML被写入响应流,破坏了下载。试试这个: 在致电TransmitFile之前,请添加

Response.Clear();

调用TransmitFile后,添加

Response.SuppressContent = "true";