私がこれのために望んでいたすべてを達成した後に答えてください。
tl;dr;
答えを直接読んでいる人のために:
Windows 用のインストーラー (InstallJammer を使用して構築) を使用して、ユーザーのマシンに Windows サービスを作成しましたが、ウイルス対策プログラムやファイアウォールによって頻繁にブラックリストに登録されていました。また、ブラウザでダウンロードすると、下の図のようなメッセージが表示されます。

これが発生する理由:
これは、ウイルス対策ソフトウェアとファイアウォールがコードを認識しない (つまり、信頼できるソースからのものであることを確認できない) ために発生します。したがって、サービスを停止するか、ネットワーク経由での通信を許可しないことにより、ダウンロードをブロックするか、サービス(アプリケーションを参照しているためサービス)をブラックリストに登録しようとします。
解決:
コード署名証明書 (以降は CSC と呼ばれます) によってコードを検証する (つまり、コードをデジタル署名する) 必要があります。これらの証明書は、認証局によって提供されます (以降、CA と呼びます)。
CA の例: Symantec (この CA から webapp の SSL 証明書を取得したため、私が使用したもの)、GlobalSign、DigiCert、Comodo など)
このページには、さまざまな CA からの CSC の価格表が表示されます。
証明書を取得するプロセス:
従うべき特定の基準と規則があるため、これは少し面倒なプロセスです。通常、証明書を取得するプロセスには数日かかります。たとえば、検証プロセスでは、ライセンスのコピーといくつかの公共料金の請求書を認証局にファックスして、私の身元を合理的に証明する必要があります。彼らはまた、電話番号を検証し、担当者と話す必要があるかもしれません.
CSC を取得した後:
証明書を .p12 ファイルとして保存する必要があります。このファイルは、コードの署名に使用されます。
署名方法:
Microsoft SDK には、コードに署名するために使用できるツール (signtool.exe) が含まれています (通常、インストールされている SDK のバージョンに応じて、C:\Program Files (x86)\Windows Kits\8.0\bin\x86 にあります。 8.0' は、私たちのマシンでは異なる場合があります。
あなたが初心者で、ファイルに署名するプロセスで自動化が必要な時期に達していない場合 (コードへの署名があいまい)、署名するファイルが非常に少ない (最大 3 または 4)、または多くのファイルがある場合署名するのに時間がかかり、時間に余裕がある場合は、DigiCert が提供するこの優れたユーティリティを使用して、署名するための非常に優れた UI (皮肉かもしれません) を使用したり、ファイルが実際に署名されているかどうかを確認したりすることをお勧めします。DigiCert の皆様、ありがとうございます。
ファイルが署名されているかどうかを確認する方法:
もちろん、最も簡単なプロセスは、ファイルのプロパティにデジタル署名用のタブが含まれているかどうかを確認することです。もう 1 つの方法は、Microsoft には、コードがデジタル署名されているかどうかを確認できるツールがあり、簡単なグーグル検索で見つけることができるということです。
コード署名(自動化)の方法:
私が構築するメインの Windows 実行可能アプリケーションには、かなりの数のバイナリと実行可能ファイルがあります。そこで、次の署名およびビルド タスクを実行するバッチ ファイルを作成しました。(コマンドラインからファイルに署名するために Microsoft の SignTool を使用しました)
- ビルドを作成する環境 (開発、ステージング、または本番) を尋ねられます。
- (ビルドに) 必要なすべてのファイルをメイン フォルダーにコピーします。
- すべての内部バイナリと実行可能ファイルに署名します。
- コマンド ライン自体から InstallJammer ビルドを実行します (前述したように、私のアプリケーションは InstallJammer を使用してビルドされます)。最終的な Setup.exe ファイルを出力します。
- そして、Setup.exe も署名されます。
PS :
コード署名後、ソフトウェアがホワイトリストに登録される (アンチウイルス ソフトウェアとファイアウォールによって認証または検証される) かどうかは、証明書の評判に依存します。このレピュテーションはヒューリスティックに決定され、レピュテーションが良好であるということは、アプリケーションがブロックされる可能性が低いことを意味します。
そこに潜んでいるマニア向けのヒント
最長期間の CSC サブスクリプションを購入してみてください。これにより、証明書のロールオーバーを回避できます。
証明書のロールオーバーとは何ですか?
証明書のロールオーバーは、古い証明書の有効期限が切れて、新しい代替証明書でコードの署名を開始したときに発生します。古い証明書に対して得られたすべての評判が妨げられる可能性があるため、新しい証明書が良い評判を得るまでにタイムラグが生じる可能性があります。
そのため、CSC の有効期限が切れて事故を回避したい場合は、タイムスタンプを使用して最初からソフトウェアに署名することをお勧めします。それについてグーグルで検索すると(タイムスタンプを使用して署名する)、5インチ賢くなります。
ずっと私を助けてくれた人々、ブログ、サイトのために。詳細については、Didier Stevens のブログを参照してください。
また、これに関する詳細な説明と、すべての Web 開発者の強力な友人である Internet Explorer のスマート フィルターについては、MSDN ブログを参照してください。