如何检查x509证书颁发者是否是微软

How to check if x509 certificate issuer is microsoft

因此,对于学校项目,我需要查明所提供的 X509Certificate 是否由 Microsoft 颁发。如果是,我必须 return true,否则我必须 return 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:这是解决此问题的正确方法吗?我无法测试它,因为老师无法提供我测试它的证书。但是我仍然需要这个东西才能正常工作。

像这样就足够了:

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;
}

它检查证书是否有效,并且它是由 "some" Microsoft CA 颁发的。更具体地说,您可以检查所有 Microsoft CA,而不是 CN=Microsoft*

编辑: 在 Windows 10 台机器上的受信任的根证书颁发机构存储中,有 4 个受信任的 Micorosft 根证书。 "CN = Microsoft Root Authority"、"CN = Microsoft Root Certificate Authority"、"CN = Microsoft Root Certificate Authority 2010" 和 "CN = Microsoft Root Certificate Authority 2011"