2011-12-06 15 views
0

私たちはネットワークからパートナーのサイトに実行可能ファイルを展開しています。実行可能ファイルは、特定のタスクを実行するためにフォルダからアセンブリを動的に読み込みます。C#を使用して、証明書が別のCAと同じCAによって発行されているかどうかを判断する方法?

実行可能ファイルは、CAが発行した証明書を使用して署名され、タイムスタンプされます。私は、実行可能ファイルによってロードされたアセンブリがCAによって署名されていることを確認したい。 C#を使ってこれをどうやって行うのですか?

答えて

2

X509Certificate2クラスの対応するインスタンスのIssuerNameプロパティを比較する必要があります。 IssuerNameは、プロパティの検査と比較が必要な複合オブジェクトへの参照であることに注意してください。

+0

これは疑問な質問かもしれませんが、IssuerNameは単なる文字列なので、何を偽装するのを止めていますか? –

+0

@SeanKearon IssuerNameは文字列ではなく、RDN(複雑な構造)です。 IssuerNameは署名された証明書の一部です。証明書を検証して有効であると判明した場合は、発行者名が変更されていないことがわかります。もちろん、証明書を使用する前に検証し、信頼する必要があります。 –

+0

ありがとうEugene、多くの感謝: –

-1

証明書の内容に応じて発行者を選択する方法はいくつかあります。 要約すると、これらは厳密一致、キー一致、より厳密なものから小さいものへの順番での名前の一致です。

完全一致では、(AKI)権限キー識別子の拡張子は、発行者の件名と一致します。このAKIには、発行者の名前とシリアル番号を含めることができます。

キー一致では、AKIには発行証明書のpubキーのハッシュのみがあります。試合は、AKIを発行証明書のSKIと比較するだけです。

名前が一致すると、AKIが存在しない場合、最も限定的ではありません。発行者名と発行証明書のサブジェクト名を比較するだけです。

私は少なくともAKIをお勧めします。

関連する問題