web-dev-qa-db-ja.com

Windows EXEファイルに署名する

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

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

メル・グリーンの答えは私をさらに連れて行きましたが、サインツールは私にどんな場合でも使用する証明書を指定することを望んでいます。無料でコード署名証明書を取得して、何らかの形でこれが機能するかどうかをテストできますか?

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

150
Lasar

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

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

signtool sign/a MyFile.exe

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

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

サインツール

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


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

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

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

これがこれを行おうとする人にもっと情報を提供することを願っています!

103
Mel Green

あなたが得ることができます 自由 安価なコード署名証明書 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
25
Lee Richardson

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

方法の説明へのリンクは次のとおりです 独自のテスト証明書を作成

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

17
Andreas

私は自分の仕事で同じシナリオを使用しましたが、ここに私たちの調査結果があります

最初に行う必要があるのは、証明書を取得し、コンピューターにインストールすることです。認証局またはmakecertを使用して証明書を生成します。

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

証明書を購入する

  • 長所
    • CA(Certificate Authority)によって発行された証明書を使用すると、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 "

    • この例では、 "C:\ filename.dll"にあるファイルに署名するために、SHA1 print印(このthumb印は証明書から取得されます)とともに個人用フォルダーに保存された証明書を使用しています。
  • 証明書ファイルを使用する

    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 verify/pa/v "C:\ filename.dll"

方法2:Windowsを使用する

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

これがお役に立てば幸いです

ソース:

17
Erick Castrillo

Linuxボックスで実行可能ファイルに署名する必要がある場合の別のオプションは、 Monoプロジェクトツールsigncodeを使用することです。 buntuでサポート です。

10
mozey

参照 https://steward-fu.github.io/website/driver/wdm/self_sign.htm 注:Microsoft SDKのsigntool.exe

1.初回(プライベート証明書を作成するため)

Makecert -r -pe -ss YourName YourName.cer

certmgr.exe -Add YourName.cer -s -r localMachineルート

2.後(サインをアプリに追加するため)

signtool sign/s YourName YourApp.exe

4
Ethan Kuo

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

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

3
Stacey Richards

次のリンクを使用して.exe(setup/installer)ファイルに署名します(Microsoft setup signtoolを使用せずにexe/setupファイルに署名します)

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

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

私のために働いた:)

2
user2085962