如何检查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"
因此,对于学校项目,我需要查明所提供的 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"