我是LDAP新手(大约1周)。我需要设置LDAP服务器,以便现有的客户端应用程序(遗憾的是我无法对其进行更改)可以从userCertificate
属性读取证书。
问题是我只能在userCertificate;binary
属性中存储证书,但客户端应用程序正在读取userCertificate
属性,如下面的代码所示。
客户端应用程序是用C#编写的,这是它从LDAP服务器读取证书的方式:
using (DirectoryEntry entry = new DirectoryEntry("LDAP://[ldapAddress]"))
{
entry.AuthenticationType = AuthenticationTypes.None;
using (DirectorySearcher searcher = new DirectorySearcher())
{
searcher.SearchRoot = entry;
searcher.Filter = "objectClass=inetOrgPerson";
SearchResultCollection results = searcher.FindAll();
foreach (SearchResult result in results)
{
byte[] buffer = new byte[0];
if (result.Properties.Contains("userCertificate") && (result.Properties["userCertificate"] != null))
{
buffer = result.Properties["userCertificate"].Cast<byte[]>().First<byte[]>();
X509Certificate2 certificate = new X509Certificate2(buffer);
}
}
}
}
所以我想知道如何实现客户端应用程序可以从我的服务器读取证书?我正在使用OpenLDAP for Windows。
答案 0 :(得分:0)
我找到了解决方案。现在我已经设置了一个与客户端应用程序一起使用的LDAP服务器。虽然我没有设法在OpenLDAP中执行此操作,但我安装了ApacheDS。 ApacheDS允许在没有userCertificate
选项的;binary
属性中存储证书。
当然,这并没有回答如何在OpenLDAP上做到这一点,但安装ApacheDS对我来说是足够好的解决方案。
当然,欢迎任何有关如何在OpenLDAP中实现这一目标的解决方案。