4

ソフトウェア アプリケーションを開発し、Verisign (現在の Symantec) から取得した Authenticode 証明書を使用してインストーラーにデジタル署名しました。Visual Studio に付属の signtool.exe ユーティリティを使用して、インストーラー (.exe) に署名しました。インストーラーを実行すると、私の目的であった「不明」ではなく、発行元として私の会社名が表示されるようになりました....成功!

次に、インストーラー ファイルを自分の Web サイトに投稿して、顧客に配布しました。このファイルは、クリックすると次のコードを実行する asp:button によって提供されます。

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(); 

Web サイトからインストーラー ファイルをダウンロードして実行すると、発行元フィールドに「不明」と表示されます!!! 次に、FTPクライアントを使用してファイルをWebサーバーからコンピューターに直接コピーしましたが、ダウンロードしたファイルには署名がありました(つまり、発行者が表示されませんでした:不明)、明らかにWebサーバー上のファイルは問題ありません。デジタル署名を削除または無効にする Web サイト経由でファイルをダウンロードするプロセスに関するものに違いありません。Firefox と IE の両方を試しましたが、同じ結果が得られました。

私は何を間違っていますか?よろしくお願いいたします。

4

1 に答える 1

2

一部のHTMLが応答ストリームに書き込まれ、ダウンロードが破損している可能性があります。これを試してください:TransmitFileを呼び出す前に、次のように追加します。

Response.Clear();

TransmitFileを呼び出した後、次のように追加します。

Response.SuppressContent = "true";
于 2013-02-26T19:16:06.860 に答える