2

如果我使用 X509Certificate.CreateFromSignedFile 来获取用于签署文件的证书,我是否可以确认它是由受信任的机构签署的——而不仅仅是某种“自签名”证书?

我想从证书中提取“主题”(公司)名称,以确保我正在使用的非托管 DLL 不受干扰(我无法对其进行校验和,因为它经常独立更新)并且是官方的。

但是,我担心伪造的 DLL 可能会使用“自签名”证书进行签名并返回原始公司的名称。所以,我想确保证书是由 Versign、Thwate 或类似机构颁发的(任何安装在机器上证书存储库上的东西都可以)。

使用 X509Certificate.CreateFromSignedFile 时,我该怎么做?还是它会自动执行此操作(即“自签名”证书将失败)?

4

2 回答 2

1

如果它不是有效的证书,您将获得异常。您想检查公司名称等有什么问题......这是代码:

  ServicePointManager.ServerCertificateValidationCallback +=
            new System.Net.Security.RemoteCertificateValidationCallback(customXertificateValidation);

    private static bool customXertificateValidation(
        object sender, X509Certificate cert,
        X509Chain chain, System.Net.Security.SslPolicyErrors error)
    {

        // check here 'cert' parameter properties (ex. Subject) and based on the result 
        // you expect return true or false

        return false/true;
    }

编辑:上面的代码仅适用于请求获得无效(自签名、过期...等)证书的 https 资源。从签名文件中提取签名的问题请在此处查看:Extracting Digital Signatures from Signed Files with .NET

于 2010-05-18T11:10:43.710 回答
0

验证()方法还不够吗?

于 2010-05-18T11:10:07.800 回答