15

Visual Studioソリューション内には、参照されるWebサイトと4〜5のクラスライブラリプロジェクトがあり、そのうちのいくつかは外部のサードパーティアセンブリも参照しています。

私はこれらのプロジェクトのアセンブリに署名するタスクを与えられました。

私の理解では、署名の目的は、公開鍵とバージョンの詳細を提供せずに、すべての人がアセンブリを使用できるわけではないということです。

これらのプロジェクトのすべてのアセンブリに署名するために1つの厳密な名前キー(.snk)を使用する必要がありますか、それとも各アセンブリに個別の厳密な名前キーで署名する必要がありますか?

強力な名前キーのパスワード保護の目的は何ですか?

どのようにそれをしますか?

どうもありがとう、

4

2 に答える 2

14

署名の目的は、誰もが公開鍵とバージョンの詳細を提供せずにアセンブリを使用できるわけではないということですよね?

いいえ。署名すると、発行者であることが確認されます。他の人がアセンブリの「偽の」バージョンを作成するのを防ぎます。

1 つの厳密な名前キー (.snk) を使用してこれらのプロジェクトのすべてのアセンブリに署名する必要がありますか? それとも、各アセンブリを個別の厳密な名前キーで署名する必要がありますか?

キーはあなたの署名なので、すべてのプロジェクトで 1 を使用してください。

厳密な名前キーのパスワード保護の目的は何ですか?

署名プロセス全体は、キーを所有しているのはあなただけであることにかかっています。関連する証明書はありません。部分署名と保護されたキーは、キーにアクセスできる人の数を制限するのに役立ちます。

于 2012-10-31T10:20:26.100 に答える
2

厳密な名前のアセンブリの目的は、同じアセンブリのバージョンを区別できるようにすることであり、作成者を特定することではありません。

一方、アセンブリにデジタル署名すると、そのアセンブリのビルダーが識別されます。

2 種類の署名の違いは、同じバイナリの異なるバージョンを区別するためだけに作成者を認識するために使用されないため、最初の署名は同じ証明書を使用する必要がないことです。
そうすれば、同じプロセス内で同じアセンブリの 2 つのバージョンを読み込むことができるため、衝突することなく同じクラスの 2 つのバージョンを使用できます。

コード署名と呼ばれるもう 1 つの署名は、コード署名のためだけに特別に細工された証明書を使用し、通常はビルダーを識別する名前の公開証明書をバイナリと共にバンドルし、認証局まで署名を検証する証明書チェーンと共にバンドルします。最初のケースは Windows エクスプローラーでは表示されず、Visual Studio で作成された自己署名証明書を問題なく使用できました。

実際には、デジタル署名コードはあらゆる種類のコードに対応しており、.NET アセンブリである必要はなく、プレーンな Win32 API DLL または EXE にすることができます。

于 2019-01-11T02:41:29.780 に答える