Windows EXEファイルの署名


180

「不明な発行元」からのアプリケーションについてWindowsがエンドユーザーに警告しないように、署名したいEXEファイルがあります。私はWindows開発者ではありません。問題のアプリケーションは、スクリーンセーバーアプリケーションを生成するアプリケーションから生成されたスクリーンセーバーです。そのため、ファイルの生成方法には影響しません。

Verisignやinstantssl.com などのCAからのコード署名証明書が必要になることはすでにわかっています。私が理解していないのは、EXEファイルに署名するために(可能な場合)何をする必要があるかです。簡単な説明とは何ですか?

メルグリーンの答えはさらに私を導きましたが、signtoolはどのような場合でも使用する証明書を指定するように求めています。これが私にとってうまくいくかどうかをテストするために、どういうわけか無料のコード署名証明書を入手できますか?

また、正しい証明書の種類を指定してください。ほとんどのサイトでは、「コード署名」についてのみ言及し、ユーザーが実際にコンパイルしたアプリケーションに署名することについて語っています。これは私には当てはまりません。


3
好奇心旺盛です-証明書を購入するためにいくら支払う必要がありますか?
InTheNameOfScience 2018年

2
@Rigelは年間およそ400ドルで、おそらく価値はありません:)
Sharan Arumugam

@SharanArumugam:WHAAT ?????? それはMicrosfotが安い/無料のソフトウェアに反対しているようなものです!
InTheNameOfScience

回答:


116

Microsoftの署名ツールを使用して試すことができます

Windows Server 2008および.NET 3.5用のWindows SDKの一部としてダウンロードします。ダウンロードしたら、次のようにコマンドラインから使用できます。

signtool sign / a MyFile.exe

これは、利用可能な「最良の証明書」を使用して、単一の実行可能ファイルに署名します。(証明書がない場合は、SignToolエラーメッセージが表示されます。)

または、あなたは試すことができます:

サインツール

これにより、アプリケーションに署名するためのウィザードが起動します。(このオプションは、Windows SDK 7.0以降では使用できません。)


実行可能ファイルに署名するプロセスをテストするために使用できる証明書を取得したい場合は、.NETツールMakecertを使用できます。

証明書作成ツール(Makecert.exe)

独自の証明書を作成し、それを使用して実行可能ファイルに署名した後、UACがそれを実行しているユーザーに信頼できるソースからのものであることをUACが知らせるために、手動でそれをマシンの信頼されたルートCAとして追加する必要があります。重要です。ROOT CAとして証明書をインストールすると、ユーザーのプライバシーが危険にさらされます。DELLで何が起こったかを確認してください。コードとWindowsの両方でこれを達成するための詳細情報は、次の場所にあります。

うまくいけば、これを実行しようとしている人にさらに多くの情報が提供されます!


:別の問題の作業ワークフローstackoverflow.com/questions/84847/...
The_Ghost

4
「このツールはVisual Studioと共に自動的にインストールされます。このツールを実行するには、開発者コマンドプロンプト(またはWindows 7のVisual Studioコマンドプロンプト)を使用してください。」msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.110).aspx
Westy92

signtoolで使用される証明書についても非常に興味があります。
Overdrivr

1
「signwizard」オプションは、Windows SDK 7.0以降では使用できません
Omar Reis

Makecertは非推奨になり、代わりにPowerShellコマンドレットNew-SelfSignedCertificateを使用してテスト証明書を作成する必要があります。stackoverflow.com/a/51443366/38117911の詳細(The_Ghostによってリンクされた質問への回答)。
Alexander Revo

35

私の仕事でも同じシナリオがあり、ここに私たちの発見があります

最初に行うべきことは、証明書を取得してコンピューターにインストールすることです認証局から証明書を購入するか、makecertを使用して証明書を生成できます。

ここに2つのオプションの長所と短所があります

証明書を購入する

  • 長所
    • CA(認証局)によって発行された証明書を使用すると、WindowsがCAからの証明書を使用するコンピューター上の「不明な発行元」からのアプリケーションについてエンドユーザーに警告しないことが保証されます(OSには通常、多くのCAのルート証明書が付属しています)
  • 短所:
    • CAから証明書を取得するにはコストがかかります

Makecertを使用して証明書を生成する

  • 長所:
    • 手順は簡単で、証明書をエンドユーザーと共有できます
  • 短所:
    • エンドユーザーは自分のマシンに証明書を手動でインストールする必要があり、クライアントによってはオプションにならない場合があります
    • makecertで生成された証明書は通常、本番環境ではなく、開発とテストに使用されます

実行可能ファイルに署名する

必要なファイルに署名するには、2つの方法があります。

  • コンピューターにインストールされている証明書の使用

    signtool.exe sign / a / s MY / sha1 sha1_thumbprint_value / t http://timestamp.verisign.com/scripts/timstamp.dll / v "C:\ filename.dll"

    • この例では、SHA1サムプリント(このサムプリントは証明書からのもの)を使用して個人用フォルダーに保存されている証明書を使用して、「C:\ filename.dll」にあるファイルに署名します。
  • 証明書ファイルを使用する

    signtool sign / tr http://timestamp.digicert.com / td sha256 / fd sha256 / f "c:\ path \ to \ mycert.pfx" / p pfxpassword "c:\ path \ to \ file.exe"

    • この例では、証明書「c:\ path \ to \ mycert.pfx」とパスワードpfxpasswordを使用して、ファイル「c:\ path \ to \ file.exe」に署名しています。

署名をテストする

方法1:signtoolを使用する

移動:スタート>タイプCMDを実行> OKをクリックコマンドプロンプトで、signtoolが存在するディレクトリを入力します。以下を実行します。

signtool.exeで/ pa / v "C:\ filename.dll"を確認します

方法2:Windowsを使用する

署名されたファイルを右クリックします。プロパティの選択[デジタル署名]タブを選択します。署名は、[署名リスト]セクションに表示されます。

これがあなたのお役に立てば幸いです

出典:


@PhilLabのお手伝いができてうれしい
Erick Castrillo

$$$の見積もりも提示してください。ありがとう!
InTheNameOfScience


30

あなたは得ることができます Certumから無料の安価なコード署名証明書を取得あなたはオープンソース開発をやっている場合。

私は1年以上証明書を使用しており、Windowsからの不明な発行元メッセージを取り除きます。

コードの署名に関する限り、次のようなスクリプトからsigntool.exeを使用します。

signtool.exe sign /t http://timestamp.verisign.com/scripts/timstamp.dll /f "MyCert.pfx" /p MyPassword /d SignedFile.exe SignedFile.exe

3
それはまだ、もはや自由はるかに安く見えない、€14
hultqvist

1
あなたは正しい、それはもはや自由に見えない。fwiw更新したばかりで、何も支払いませんでした。多分私は祖父です。多分彼らの内部プロセスが壊れています。彼らのウェブサイトは確かに複雑です。
Lee Richardson、


Certumショップによると、オープンソースの証明書はMicrosoft SmartScreen Filterメッセージを削除しません。
Markus Laire

17

ASPの雑誌ASPectsには、コードに署名する方法の詳細な説明があります(この記事を読むには、メンバーである必要があります)。あなたはそれをダウンロードすることができますhttp://www.asp-shareware.org/。

ここに、独自のテスト証明書を作成する方法の説明へのリンクがあります

これも興味深いかもしれません。


7
4年後の補遺:Comodoは2012年の初めに侵害されたため(blogs.comodo.com/it-security/data-security/…)、多くのユーザーエージェントがComodoルート認証局
A. Wilson

8
コモドは2013年半ばにまだ危険な賭けであり、「ユーザーエージェント」によると、悪名高い「不明な発行元」メッセージを表示するかどうかを決定するのはMicrosoft / Windowsであることを意味します。
Dan W

申し訳ありませんが、1)古くなっており、2)現在はトピック外と判断されている(1のため)の明示的なサービス推奨を削除しました。
だます



4

さらに別のオプションとして、Windows 10で開発しているが、Microsoftのsigntool.exeがインストールされていない場合は、Windows上のUbuntuでBashを使用してアプリに署名できます。以下がその概要です。

https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/


osslsigncodeもで利用できるcygwinため、既に使用している場合は(私のように)、WSLに切り替える必要はなく、現在の環境にサインインできます。
thoni56 2018

4

次のリンクを使用して、.exe(セットアップ/インストーラー)ファイルに署名します(Microsoftセットアップサインツールを使用せずにexe /セットアップファイルに署名します)

https://ebourg.github.io/jsign/#files

サンプルコマンドjava -jar jsign-2.0.jar --keystore keystore.jks "--alias alias --storepass password MyInstaller.exe

私のために働いた:)


3

これは質問への直接の回答ではありませんが、遅かれ早かれプログラマーが財布に手を入れるようになるので、密接に関連しています(そして私が期待しているように役立ちます)。

したがって、EV署名の価格:

1年間$ 350 +(50ドルの隠し料金)
2年間$ 600
3年間$ 750
[www.ksoftware.net] [3]
USBスティックとして送信されたeToken。リーダーは必要ありません。
Comodo(Sectigo)から実際に購入する

1年350ユーロ
3年799ユーロ
sklep.certum.pl

1年間$ 499 USD
3年間$ 897 USD
sectigo.com

1年$ 410合計
2年$ 760合計
3年$ 950合計
www.globalsign.com

1年:600ドル(104ドルでした)
3年:?
www.digicert.com

1年:700ドル
3年:途方もなく高価
[ https://trustcenter.websecurity.symantec.com/]

ここのより多くの価格:https :
//cheapsslsecurity.com/sslproducts/codesigningcertificate.html


Erick Castrilloによって追加されたリンクも参照してください:cheapsslsecurity.com/sslproducts/codesigningcertificate.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.