使用.Net从远程证书库读取

时间:2014-10-14 02:05:50

标签: x509certificate remote-server

我在拥有多个网络服务器(> 20)和应用服务器(> 10)的环境中工作。打电话给我的许多客户' Web服务,除了标准的SSL握手之外,还需要将证书附加到身份验证请求。目前,我们在每个服务器的本地商店中维护这些证书。随着我们获得更多服务器和更多客户端,这将无法维护。计划是将证书移动到专用证书服务器。

我已经查找了有关如何从.Net中的远程存储中检索证书但未能找到任何内容的文档。有谁知道我在哪里可以找到一些文档或者有一些他们可以共享的.Net代码。

1 个答案:

答案 0 :(得分:1)

您可以使用与本地证书枚举相同的X509Store从远程Windows商店中读取

public static X509Certificate2 GetCertificate(string subject, string machine)
{
    var sp = new StorePermission(PermissionState.Unrestricted);
    sp.Flags = StorePermissionFlags.OpenStore | StorePermissionFlags.EnumerateCertificates;
    sp.Assert();
    return GetCertificate(subject, new X509Store(string.Format(@"\\{0}\MY", machine), StoreLocation.LocalMachine));
}


public static X509Certificate2 GetCertificate(string subject, X509Store store)
{
    store.Open(OpenFlags.ReadOnly);

    try
    {
        var cert = MatchCert(store.Certificates, subject);

        return cert;
    }
    finally
    {
        store.Close();
    }
}

但问题是只能以这种方式读取公钥。通过网络路径读取证书时,无法访问私钥。