X509Store.Certificates.Find with validOnly 为 true 不返回中间授权证书

fer*_*ega 5 c# azure x509certificate

我安装了一个证书:

  • 证书(本地计算机)
    • 受信任的根证书颁发机构
      • 证书

并且此代码使证书有效。

X509Store certStore = new X509Store(StoreName.CertificateAuthority, StoreLocation.LocalMachine);
certStore.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);

try {
    var oAuthRootCertificateList = certStore.Certificates.Find(findType, findValue, true);
    oauthRootCertificate = oAuthRootCertificateList[0];
} catch (Exception ex) {
    Trace.TraceError(ex.Message);
} finally {
    certStore.Close();
}
Run Code Online (Sandbox Code Playgroud)

* (findType 和 findValue 是之前在代码中设置的)

一切正常,代码也很好。

现在我已经从“受信任的根证书颁发机构”中删除了证书并安装在:

  • 证书(本地计算机)
    • 中级认证机构
      • 证书

因为 Azure 不允许我在受信任的根分支上部署证书。

现在,代码失败了。我必须将最后一个参数 (validOnly) 从truetofalse更改为使其运行。

您可以在此处查看该Find方法的帮助。

知道为什么它没有运行以及我如何解决它吗?

Raj*_*esh 3

中间存储中的证书用于证书链验证目的。如果您的证书是自签名证书,则其颁发者需要出现在受信任的根颁发机构中才能使证书验证成功。

仅将其放置在中间证书颁发机构中是不够的。