【问题标题】:How to check if x509 certificate issuer is microsoft如何检查 x509 证书颁发者是否是微软
【发布时间】:2015-11-12 10:52:20
【问题描述】:

因此,对于一个学校项目,我需要确定提供的 X509Certificate 是否由 Microsoft 颁发。如果是我必须返回true,否则我必须返回false。

这就是我目前所拥有的

private bool IsAcceptedCertificate(X509Certificate cert)
        {               
            try
            {
                //if microsoft
                if (cert.Issuer.Equals("Microsoft")) {
                    return true;
                }
            }
            catch (CryptographicException ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.ToString());
            }

            //if not microsoft
            return false;
        }

编辑 1:这是解决此问题的正确方法吗?我无法测试它,因为老师无法提供给我测试它的证书。但是我仍然需要这个东西才能正常工作。

【问题讨论】:

  • 我没有看到任何问题。代码不工作吗?
  • 对不起,我会更新它@SimpleVar
  • 这是不正确的。每个人都可以颁发自签名证书并将 Microsoft 放在颁发者名称中。

标签: c# x509certificate


【解决方案1】:

这样就足够了:

private  bool IsAcceptedCertificate(X509Certificate2 cert)
{
    try
    {
        if(cert.Verify() && cert.Issuer.StartsWith("CN=Microsoft"))

        {
            return true;
        }
    }
    catch (CryptographicException ex)
    {
        System.Diagnostics.Debug.WriteLine(ex.ToString());
    }

    //if not microsoft
    return false;
}

它检查证书是否有效,以及它是否由“某些”Microsoft CA 颁发。更具体地说,您可以检查所有 Microsoft CA,而不是 CN=Microsoft*

编辑:在 Windows 10 机器上的 Trusted Root Certificaton Authorities 存储中,有 4 个受信任的 Mirosft 根证书。 “CN = Microsoft 根证书颁发机构”、“CN = Microsoft 根证书颁发机构”、“CN = Microsoft 根证书颁发机构 2010”和“CN = Microsoft 根证书颁发机构 2011”

【讨论】:

  • 谢谢,我会调查一下
猜你喜欢
  • 1970-01-01
  • 2012-03-25
  • 2013-07-09
  • 2021-04-22
  • 2012-06-06
  • 1970-01-01
  • 2012-03-19
  • 2013-01-20
  • 2019-09-26
相关资源
最近更新 更多