5

メッセージを復号化し、.NET アプリケーションで署名を検証する必要があります。

EnvelopedCms.Decrypt(X509Certificate2Collection) と SignedCms.CheckSignature(X509Certificate2Collection, bool) を使用しようとしました。これらの方法はうまく機能しますが、証明書のコレクションを追加の証明書として扱います。システムストアからの証明書も常に使用します。

提供された証明書コレクションのみを使用して署名を復号化および検証する標準的な方法はありますか? システム ストアに複数の証明書があり、クライアント A によって署名されたメッセージは、クライアント B からのものである場合は拒否されます。

4

1 に答える 1

0

おそらく、カスタム検証メソッドを定義する必要があります。

このリンクを確認してください: http://8r13n.wordpress.com/2007/07/24/bypassing-certificate-validation-in-net/

ダミーの実装は次のようになります。

public static bool TrustAllCertificatesCallback(
        object sender, X509Certificate cert,
        X509Chain chain, SslPolicyErrors errors)
{
    return true;
}

そして、次の値を設定しますServerCertificateValidationCallback

// Call this at the start of your app
ServicePointManager.ServerCertificateValidationCallback =
            TrustAllCertificatesCallback;

アップデート

の送信者を確認したい場合は、クライアントの証明書を保持するプロパティSignedCmsを使用できます。Certificates

于 2012-12-05T17:03:16.823 に答える