如何创建自签名证书来签署 MimeKit 消息?

How to create a self-sign certificate to sign a MimeKit Message?

如何为开发创建适合签署 MimeKit 消息的自签名证书?

MimeKit 有自己的 CmsSigner。当我尝试将证书加载到 MimeKit CmsSigner 中时:

X509Certificate2 cert = new X509Certificate2(@"cert.pfx", "xpto", X509KeyStorageFlags.Exportable);
var signer = new MimeKit.Cryptography.CmsSigner(cert);

它抛出:

'The certificate cannot be used for signing.'

问题是 CmsSign 使用的默认算法必须与用于创建证书密钥的算法相同,在我的例子中是 SHA1。

这里是如何为 S/MIME 证书加载的:

X509Certificate2 cert = new X509Certificate2(@"ca.p12", "xpto", X509KeyStorageFlags.Exportable);
var signer = new CmsSigner(cert);
signer.DigestAlgorithm = DigestAlgorithm.Sha1;
MultipartSigned.Create( signer, mimeMessage.Body);