我在拥有多个网络服务器(> 20)和应用服务器(> 10)的环境中工作。打电话给我的许多客户' Web服务,除了标准的SSL握手之外,还需要将证书附加到身份验证请求。目前,我们在每个服务器的本地商店中维护这些证书。随着我们获得更多服务器和更多客户端,这将无法维护。计划是将证书移动到专用证书服务器。
我已经查找了有关如何从.Net中的远程存储中检索证书但未能找到任何内容的文档。有谁知道我在哪里可以找到一些文档或者有一些他们可以共享的.Net代码。
答案 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();
}
}
但问题是只能以这种方式读取公钥。通过网络路径读取证书时,无法访问私钥。