如何使用C#从Active Directory检索用户的私钥(=如何从Active Directory获取PKCS12(PFX)证书?)

时间:2013-03-14 13:58:04

标签: c# active-directory pki

我们正在使用Active Directy和C#实施数字签名ad-hoc方案。 我们想知道如何从用户在AD上的帐户条目中检索私钥(或用户的PFX文件),以便我们可以使用该私钥来签署一些信息。同时,如何在AD中为每个用户正确安装PFX文件? (以便我们以编程方式稍后检索它)

我们已经访问AD并从“userCert”字段中检索公钥信息,我们现在用它来验证签名文档,但我们需要先访问私钥才能签署这些文档!

我们正在使用LDAP来访问AD。像这样:

DirectoryEntry o2ADEntry = new DirectoryEntry("LDAP://darwin.charles/DC=domain, DC=info", "user", "password");
DirectorySearcher o2objSearch = new System.DirectoryServices.DirectorySearcher(o2ADEntry);

o2objSearch.PropertiesToLoad.Add("samaccountname");
o2objSearch.PropertiesToLoad.Add("displayname");
o2objSearch.PropertiesToLoad.Add("userCert");
o2objSearch.Filter = (string.Format("(samaccountname={0})", "user")); 

SearchResult res = o2objSearch.FindOne();
if (res != null)
{
   CreateNavigator().SelectSingleNode("/my:myFields/my:name", NamespaceManager).SetValue(res.GetDirectoryEntry().Properties["displayname"].Value.ToString());
   FormState["certificate"] = res.GetDirectoryEntry().Properties["userCert"].Value;
}

我们也使用标准的Microsoft Crypto API(没有bouncycastle,没有OpenSSL.NET)。

我们在这里查看http://technet.microsoft.com/en-us/library/aa996408(v=exchg.65).aspx,但没有说明如何访问私钥。

非常感谢,朋友们!

0 个答案:

没有答案