【问题标题】:Mimekit installing certificates upon verifyMimekit 在验证时安装证书
【发布时间】:2017-03-07 08:30:10
【问题描述】:

我正在使用MimeKit 来验证 SMIME 多部分签名消息是否由特定实体签名。我有这个实体的公共证书。在MultipartSigned 对象上调用Verify(context) 时,证书正在导入到服务器证书列表中。我想要的是,如果找不到证书,则会出现此错误。否则,如果恶意用户签署了一个文件,它将通过,更糟糕的是,我最终会安装他的证书。

我的推理有问题吗?

这是我正在使用的代码。

var signed =(MultipartSigned)MimeEntity.Load(ParserOptions.Default,@"C:\mysignedfile.txt");

using (var context = new WindowsSecureMimeContext(StoreLocation.LocalMachine))
{
    foreach (var signature in signed.Verify(context))// This install the certificate!
    {
        try
        {
            bool valid = signature.Verify();
        }
        catch (DigitalSignatureVerifyException)
        {
            throw;
            // There was an error verifying the signature.
        }                    
    }
}

【问题讨论】:

    标签: c# smime mimekit


    【解决方案1】:

    在您的证书存储中拥有证书并不意味着它是受信任的,它只是意味着它是已知的。

    就是这样。

    这允许您稍后将其标记为受信任,还允许您的系统检查撤销。

    【讨论】:

    • 同意。我最终添加了额外的代码来检查证书是否可信。谢谢。
    • 我正在尝试在我的项目中做类似的事情。如果签名实体的公钥未安装或已安装但不受信任,我希望签名验证失败。我是否理解正确,签名消息还包含用于验证的公钥,所以我不能因为证书未安装在我的 Windows 证书存储中而让验证失败?
    • 一般签名消息也包含证书,是的。
    猜你喜欢
    • 1970-01-01
    • 2015-06-05
    • 2013-10-20
    • 2016-08-06
    • 2012-04-18
    • 2017-11-22
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多