1

基本的に質問のとおりです。

ユーザーのマシンにインストールされた X509Certificate2 を使用して電子メールに署名するプログラムを作成しました。これは MimeKit を使用して行われるため、非常に簡単です (図を参照)。

var signer = new CmsSigner(certificate, key);
signer.DigestAlgorithm = DigestAlgorithm.Sha1;

message.Body = MultipartSigned.Create(ctx, signer, messageContent);

切り離された署名の代わりに「不透明な」署名を使用して、この署名付き電子メールを作成できるかどうか尋ねられました。これを行うことができるOpenSSLのオプションがあると思います(??)。

とにかく、MimeKit に関連する「不透明」オプションについての言及を見つけることができませんでした。

これは可能ですか?

4

2 に答える 2

1

はい、これも可能です。S/MIME に関して、人々が不透明な署名を参照するとき、彼らが意味することは、アプリケーション/pkcs7-mime 形式の署名が必要だということです。これを作成する方法は次のとおりです。

var signer = new CmsSigner(certificate, key);
signer.DigestAlgorithm = DigestAlgorithm.Sha1;

message.Body = ApplicationPkcs7Mime.Sign(ctx, signer, messageContent);

それが役立つことを願っています!

ノート:

2013 年後半、Microsoft は、破られていないダイジェスト アルゴリズムとしての SHA-1 の使用を 2016 年までに廃止することを発表しました。SHA-1 ダイジェスト アルゴリズムは、2018 年までに衝突に対して脆弱になり、安全であるとは見なされなくなると推測されています。

Microsoft およびその他のベンダーは、SHA-224、SHA-256、SHA-384、および SHA-512 の 4 つのバリアントを含むダイジェスト アルゴリズムの SHA-2 スイートに移行する予定です。

于 2015-06-02T10:16:39.757 に答える
0
public void SignEmail( MimeMessage m, Org.BouncyCastle.X509.X509Certificate certificate, Org.BouncyCastle.Crypto.AsymmetricKeyParameter key, MailboxAddress sender, MimeEntity content)
    {
        var signer = new MimeKit.Cryptography.CmsSigner( certificate, key );
        signer.DigestAlgorithm = DigestAlgorithm.Sha1;

        m.Body = ApplicationPkcs7Mime.Sign( sender, signer.DigestAlgorithm, content );
    }
于 2015-09-20T10:58:44.973 に答える