5

我在以下位置安装了证书:

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

此代码使证书有效。

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

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

一切都很好,代码也很好。

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

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

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

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

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

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

4

1 回答 1

3

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

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

于 2013-03-21T14:28:01.970 回答