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

时间:2018-10-01 14:03:40

标签: c# certificate x509certificate2 mimekit

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

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

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

它抛出:

  

“证书不能用于签名。”

1 个答案:

答案 0 :(得分:0)

问题在于,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);