繁体   English   中英

如何检查X509证书颁发者是否为Microsoft

[英]How to check if x509 certificate issuer is microsoft

因此,对于一个学校项目,我需要确定是否由Microsoft发行了提供的X509Certificate。 如果它是我必须返回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:这是解决此问题的正确方法。 我无法对其进行测试,因为老师无法向我提供证书来进行测试。 但是我仍然需要这个东西才能正常工作。

像这样的东西就足够了:

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计算机上的受信任的根证书颁发机构存储中,有4个受信任的Micorosft根证书。 “ CN = Microsoft根证书颁发机构”,“ CN = Microsoft根证书颁发机构”,“ CN = Microsoft根证书颁发机构2010”和“ CN = Microsoft根证书颁发机构2011”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM