問題タブ [authenticode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 自動ビルドの .NET プロジェクトで、Authenticode によるサードパーティ ライブラリへの署名を回避するにはどうすればよいですか?
最近、コード署名証明書を購入し、自動ビルドにコード署名ステップを組み込んでいます。
ビルド スクリプトは VB6 プロジェクトと .NET プロジェクトの両方をビルドする必要があるため、現在、すべてをビルドするバッチ ファイルがあります。.NET プロジェクトの場合、ビルド スクリプトは MSBUILD を呼び出し、ビルドするソリューション ファイルを渡します。これらのソリューションのプロジェクトにはいくつかのサードパーティの依存関係があり、これらのファイルはすべて、アプリケーションを実行するために必要であるため、 [参照設定] で [ローカルにコピー] オプションがオンになっています。さらに、一部のプロジェクトは COM Interop を使用するため、相互運用アセンブリ ( Interop.MSXML2.dllなど) が自動的に生成され、ビルド中に出力フォルダーにもコピーされます。
各アセンブリで個別にsigntool.exeを呼び出さなくても、ビルド中にコンパイルされたファイル (つまり、アセンブリ) にコード署名し、サードパーティのライブラリと相互運用アセンブリを無視するだけの簡単なコードを見つけようとしています。 .
現在、ビルドスクリプトで次のことを行うことで、これを回避しました。
- ビルドが以前にビルドされたすべてのファイルをクリーンアップすることを確認してください
- ビルドの出力フォルダーを指定して、MSBUILD で .NET ソリューションをコンパイルします。
- signtool.exeを使用して、出力フォルダー内のすべてのバイナリ (EXE、DLL、OCX) に再帰的に署名します。これにより、サードパーティのライブラリや自動生成された Interop アセンブリなど、すべてに署名されます
- 私のサードパーティの依存関係は別の
lib
フォルダーにあるため、すべてのファイルをlib
ビルド出力フォルダーにコピーして、ビルドがそこにコピーしたコピーを上書きします。このようにして、これらのファイルは署名されなくなりますが、アセンブリはまだ署名されています
私の質問は、これを行うためのより良い方法はありますか? 私が考えることができる他の唯一の代替手段は、署名が必要な各アセンブリで個別にsigntool.exeを呼び出すことですが、プロジェクトの数とそれらで発生する変更の量 (アセンブリの名前が変更され、移動され、取得される) のために、これは苦痛になる可能性があります。プロジェクトが進展するにつれて削除されます)。さらに、特定のアセンブリが署名されているかどうかを推測する必要がないため、ファイルをループして一括で署名することが最も理にかなっています。
ただし、同時に、コード署名証明書を使用して作成していないファイルに任意に署名することは (道徳的、法的、またはその他の点で) 適切ではないようです。
それとも、私はこれについて完全に間違った方法で進んでいますか?
authenticode - SignTool の予期しない内部エラー
次のコマンドで SignTool を実行しています: signtool sign /f keyfile.pfx /p mypassword pathToMsiFile.msi で、次のエラーが表示されます。
SignTool エラー: 予期しない内部エラーが発生しました。エラー情報: 「エラー: Store::ImportCertObject() が失敗しました。」(-2146893792/0x80090020)
ほんの1日前までは機能していましたが、何が変わったのかわかりません...
どんなアイデアも素晴らしいでしょう、ありがとう!
私はそれを修正することができました。どうやらユーザーが破損していたようです。
Microsoft のこの KB を使用してユーザーを修正した後、すべてが再び正しくなりました。
c# - X509Certificateを使用して.NETアセンブリに署名できますか?
X509Certificateを基本的に理解しており、開発環境用の証明書と秘密鍵を作成したと思います。X509Certificateクラスおよびその他の関連する権限についても詳しく知ることができます。
その過程で、システムに証明書をインストールした後、証明書をテストすることにしました。次に、次のコードを使用して、認証認証のチェックプロセスを検証しようとしました。
もちろん、予想どおり、コードの内部ブロックは実行されません。そこで、証明書キーを使用してアセンブリに署名するだけでよいと考えましたが、「単純に」は思ったほど単純ではありませんでした。
アプリケーションに証明書を割り当てるために、次のコードを使用しました。証拠:
しかし、これもうまくいかなかったようです。次に、プロジェクトのプロパティをチェックして、X509Certificateキーを使用してプロジェクトに署名する方法があるかどうかを確認しましたが、何もありませんでした。近いと思う唯一のオプションは、ClickOnceマニフェストで署名することです。ただし、[ファイルから選択]オプションは.pfx拡張子を探しています。したがって、この方法は、Click-Onceによって生成された証明書をサポートするためにのみ機能すると思いますか?
BOLによると、「別の形式のキーファイルまたは証明書がある場合は、それをWindows証明書ストアに保存し、前の手順で説明されている証明書を選択します。」X509CertificateをTrustedRootCertificateAuthoritiesストアにインストールしました。それはWindows証明書ストアではないでしょうか?証明書ストアウィンドウには何も表示されないためです。
キーワードの間違った組み合わせを使用していない限り、オンラインリソースを検索してもあまり効果はありませんでした。これで、別のX509Certificateとキーを作成して、キーの拡張子が.pfxであることを確認できましたが、ホイールを無料で回転させる前に、正しい解決策にあることを確認したかったので、それが答えになるとは思いません。 。
では、X509Certificateを使用して.NETアセンブリに署名できますか?もしそうなら、このタスクの実行を支援するためにどのようなドキュメントが利用可能ですか?
.net-4.0 - .Netコード署名-AD証明書を使用できますか?
多数のOLEDBプロバイダーを使用する内部プロジェクトに取り組んでいます。そのうちのいくつかにはUIがあります。最大の課題は、マニフェストでuiAccess = trueを要求する必要があることです。これは、コードがデジタル署名されている場合にのみWindowsで可能です。このアプリケーションは内部でのみ使用されます。ADのプライマリドメインコントローラーは、ドメイン内のすべてのマシンのCAとして機能し、完全に信頼されていると想定しています。また、SQLサーバーやInfopathなどの目的でコード署名証明書を生成することもできます。
AD / PDCによって発行されたコード署名証明書を使用して(クリックワンスではなく)WPFアプリケーションに署名し、この目標を達成できるかどうかを誰かが知っていますか。
この方向のガイダンスに感謝します。
c# - C#: Authenticode 署名付きファイルの改ざんを検出する方法
exe のデジタル署名を検証する C# プログラムを作成しようとしています。exe は Authenticode 証明書で署名されており、改ざんを検出したいと考えています。
ここで説明されているように、SignedCms インスタンスを作成できました: Get timestamp from Authenticode Signed files in .NET
SignedCms.CheckSignature でうまくいくと思っていましたが、このメソッドは決して例外をスローしません... exe の一部を変更しても例外ではありません...
c# - 特定の実行可能ファイルがデジタル署名されていて有効かどうかを確認しますか?
私のC#
/.NET
アプリケーションでは、特定の実行可能ファイルがデジタル署名されているかどうかを確認する必要があります (できればException
テストなしで)。
次に、その証明書が (インストールされたルート証明書に基づいて)有効かどうか、およびファイルの内容が署名に対して有効かどうかを確認する必要があります。
には非常に多くのクラスがありBCL
、どこから始めて何を使用すればよいかわかりません。これまでに見つけたものは、私の混乱を解消するものではありません...
可能であれば、このようなこと をしたいと思います:P/Invoke
追加された説明:
私が現在抱えている大きな問題は、そのようなファイルの署名を簡単に取得する方法が見つからないことです。BCL
まさにその部分が欠けていると驚くので、提供され、管理されたソリューションがあることを願っています。(証明書の場合、これは だけで実行できX509Certificate.CreateFromSignedFile
、検証も可能です)
50% の作業をP/Invoke
コードや大きな別のライブラリで行うことは避けたいと思います。
クラスを見つけましたがAuthenticodeSignatureInformation
、特定の実行可能ファイルでそれを使用することに関する情報はありません。
code-signing - 鍵の署名はなぜそれほど高価なのですか?
最近、Authenticode 署名キーの取得を検討していましたが、その費用の高さにショックを受けています。これは、Authenticode や SSL など、ほとんどの種類の署名キーは非常に高価であると考えさせられました。
これには、CA の維持と鍵の生成に費用がかかる技術的な理由があるのでしょうか、それとも単純な独占経済に帰着するのでしょうか?
.net - 新しいアセンブリへの厳密な命名または Authenticode 署名
エンド ユーザーから、コンポーネントの 1 つに "厳密な名前付け" を追加するように依頼されました。厳密な名前のアセンブリから参照したいからです。
私はすでに Authenticode 証明書を持っているので、疑問に思っています - 強い名前のコンポーネントでコンポーネントを使用できるようにするには、Authenticode キーでコンポーネントに署名するだけで十分ですか?
または、アセンブリが「厳密な名前」と見なされるようにするには、(Al.exe を使用して) アセンブリに「厳密な名前で署名」する必要がありますか?
これに関して明示的な「厳密な名前vrs認証コード」のドキュメントが見つかりません。
c# - 厳密な名前を付けずにコード署名すると、アプリが悪用される可能性がありますか?
Authenticode コード署名と厳密な名前付けについて頭を悩ませようとしています。
少数の dll (厳密な名前ではない) を参照する exe にコード署名すると、悪意のあるユーザーが私の DLL を置き換えて、あたかも私が署名したかのように見える方法でアプリを配布する可能性がありますが、実行されていると考えるのは正しいですか?彼らのコード?
それが本当であると仮定すると、.NET アプリ全体に厳密な名前を付けずに署名したくないと思われます。そうしないと、作成したアプリを装ってコードを実行する機能を人々に与えることになりますか?
私が確信が持てない理由は、私がオンラインで見つけた記事 (SN+Authenticode の使用に関する MSDN ドキュメントを含む) のどれもこれに言及していないようであり、理解することがかなり重要なポイントのように思われるからです (私が正しく理解していれば) ?
code-signing - 別のファイルを起動する.exeに署名できますか?
別のインストーラーを抽出して起動するインストーラー(.exe)を開発しています。Authenticode証明書を使用して最初の.exeに署名する場合、組み込みインストーラーにも署名する必要がありますか?さまざまなバージョンのWindows(UACがオンになっているVistaを含む)でインストーラーを実行できる必要があり、ユーザーにとってエクスペリエンスが劣っているように見える必要があります。
ありがとう。