重複の可能性:
共有アセンブリ - 署名は必要ですか?
共有アセンブリを構築したい場合、キー ペアの署名と管理のオーバーヘッドが必要ですか?
アセンブリをグローバルアセンブリキャッシュに配置する場合は、アセンブリに署名する必要があります。
グローバルアセンブリキャッシュに展開されるアセンブリには、厳密な名前を付ける必要があります。
他の展開シナリオでは、厳密な名前(署名を意味する)は必須ではありませんが、推奨されます。
まず、共有アセンブリの構築には、暗号化キーの操作が含まれます。アセンブリの構築時には、公開鍵のみが厳密に必要です。.NET Frameworkを対象とするコンパイラは、アセンブリの構築時に公開鍵を提供するためのコマンドラインオプションを提供します(またはカスタム属性を使用します)。共通の公開鍵のコピーをソースデータベースに保持し、ビルドスクリプトがこの鍵を指すのが一般的です。アセンブリを出荷する前に、アセンブリは対応する秘密鍵で完全に署名されている必要があります。これは、SN.exe(Strong Name)と呼ばれるSDKツールを使用して行われます。
強力な名前署名には、Authenticodeのように証明書は含まれません。関係するサードパーティ組織、支払い手数料、証明書チェーンはありません。さらに、厳密な名前を検証するためのオーバーヘッドは、Authenticodeの場合よりもはるかに少なくなります。ただし、厳密な名前は、特定の発行元を信頼することについては何も述べていません。厳密な名前を使用すると、特定のアセンブリのコンテンツが改ざんされていないこと、および実行時にユーザーに代わって読み込まれるアセンブリが、開発したものと同じ発行元からのものであることを確認できます。しかし、それはあなたがその出版社の身元を信頼できるかどうかについては何も述べていません。
お役に立てれば。
実は違う。.NETは、アセンブリへの署名を強制しません。また、.NETのすべてのアセンブリが共有されます。C ++やその他の母国語の場合と同じように、静的ライブラリを構築することはできません。
アセンブリに署名する必要がある唯一の状況は、 GloballAssemblyCacheにデプロイする必要がある場合です。
いいえ、必須ではありません。
署名を使用して、たとえば有効な証明書を使用して歌うときに信頼を高めるか、アセンブリに強い名前で署名したときにアセンブリが変更されないようにすることができます。サインエンドである必要があるのは、 GAC
のアセンブリのみです。