X509Certificateを基本的に理解しており、開発環境用の証明書と秘密鍵を作成したと思います。X509Certificateクラスおよびその他の関連する権限についても詳しく知ることができます。
その過程で、システムに証明書をインストールした後、証明書をテストすることにしました。次に、次のコードを使用して、認証認証のチェックプロセスを検証しようとしました。
const string x509Cert = @"\PathToMyCertificate\LMC.cer";
var cert = new X509Certificate(x509Cert);
var pmc = new PublisherMembershipCondition(cert);
if(pmc.Check(Assembly.GetCallingAssembly().Evidence))
{
Console.WriteLine("Assembly belongs to publisher");
}
もちろん、予想どおり、コードの内部ブロックは実行されません。そこで、証明書キーを使用してアセンブリに署名するだけでよいと考えましたが、「単純に」は思ったほど単純ではありませんでした。
アプリケーションに証明書を割り当てるために、次のコードを使用しました。証拠:
var publisher = new Publisher(X509Certificate.CreateFromCertFile(x509Cert));
var evidence = Assembly.GetCallingAssembly().Evidence;
evidence.AddHost(publisher);
// Create an identity permission based on publisher evidence.
var x509Permission = (PublisherIdentityPermission)publisher.CreateIdentityPermission(evidence);
x509Permission.Demand();
しかし、これもうまくいかなかったようです。次に、プロジェクトのプロパティをチェックして、X509Certificateキーを使用してプロジェクトに署名する方法があるかどうかを確認しましたが、何もありませんでした。近いと思う唯一のオプションは、ClickOnceマニフェストで署名することです。ただし、[ファイルから選択]オプションは.pfx拡張子を探しています。したがって、この方法は、Click-Onceによって生成された証明書をサポートするためにのみ機能すると思いますか?
BOLによると、「別の形式のキーファイルまたは証明書がある場合は、それをWindows証明書ストアに保存し、前の手順で説明されている証明書を選択します。」X509CertificateをTrustedRootCertificateAuthoritiesストアにインストールしました。それはWindows証明書ストアではないでしょうか?証明書ストアウィンドウには何も表示されないためです。
キーワードの間違った組み合わせを使用していない限り、オンラインリソースを検索してもあまり効果はありませんでした。これで、別のX509Certificateとキーを作成して、キーの拡張子が.pfxであることを確認できましたが、ホイールを無料で回転させる前に、正しい解決策にあることを確認したかったので、それが答えになるとは思いません。 。
では、X509Certificateを使用して.NETアセンブリに署名できますか?もしそうなら、このタスクの実行を支援するためにどのようなドキュメントが利用可能ですか?