为什么makecert没有制作*有效*证书?

wil*_*lem 2 c# makecert x509certificate2 x509certificate

我想创建一个X509证书用于测试目的.该证书必须由3台开发人员在其本地计算机上共享(即所有共享相同的证书,以便我们可以使用相同的指纹).

因此,此证书中的私钥必须是可导出的.

我使用以下命令创建证书:

makecert -r -pe -n "CN=mytestsite.local" -b 01/01/2000 -e 01/01/2036 -ss my -sr localMachine -sky exchange localhost.cer
Run Code Online (Sandbox Code Playgroud)

此证书工作正常,但问题是调用Certificates时isValid参数必须为false.查找...

        var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
        store.Open(OpenFlags.ReadOnly);

        var cert = store.Certificates.Find(
                                X509FindType.FindByThumbprint,
                                Config.PdfCertificateThumbprint, 
                                false  //********************* This has to be false.
                              ).OfType<X509Certificate>().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

只要我将IsValid属性设置为True,Find方法就不再返回我的证书.为什么makecert会生成"无效"证书?或者我如何弄清楚证书被认为无效的原因?

dut*_*tzu 8

嗯,这是因为它不是由"可信证书颁发机构"颁发的,就像互联网上使用的"真正的"证书.(例如由VeriSign发布)

您可以在本地执行的操作是在您的用户和/或本地计算机的可信证书中手动添加证书.但是,必须对使用它的每个人执行此过程,直到您获得CA(证书颁发机构)颁发的有效SSL证书.

但是您的问题指向的情况是,它仅用于开发目的,因此您可以做的是手动将证书添加到Trusted,或者您可以覆盖.Net中的证书验证机制并编写将认为您的证书有效的代码.