我们的应用程序适用于 Active Directory 用户和组。我们在端口 389 上使用 LDAP 进行 Active Directory 操作。现在,我们的一位客户希望我们添加一个使用 LDAP + SSL 进行 Active Directory 通信的选项。
他们告诉我们,他们在其域上安装了本地 CA,并使用 LDAPS 自签名证书。他们还告诉我们,他们将提供证书,不需要相互信任,我们应该使用 Windows 证书存储。
我开发了一个用于 LDAP+SSL 操作的测试应用程序,并发现当客户端启动 LDAP+SSL 连接时,服务器会发送其证书。我只能通过从服务器证书验证方法返回 true 来建立连接。
问题是:- 客户应该向我们提供哪个证书(根、用于 LDAP+SSL 的证书...)?
在.Net环境下工作的证书应该是什么格式?
连接服务器时如何验证服务器的证书?
“我们应该使用 Windows 证书存储”是什么意思?他们是否希望我们将服务器的证书自动添加到本地计算机的受信任证书存储中?
我用于 LDAP+SSL 连接的示例代码,
LdapConnection _connection = new LdapConnection(new LdapDirectoryIdentifier(m_DomainName, m_PortNo));
_connection.Timeout = TimeSpan.FromMinutes(10);
_connection.AuthType = AuthType.Basic;
_connection.Credential = new NetworkCredential(m_UserName, m_Password);
_connection.SessionOptions.ProtocolVersion = 3;
_connection.SessionOptions.SecureSocketLayer = true;
_connection.SessionOptions.VerifyServerCertificate = (ldapCon, serverCertificate) =>
{
//TODO: Verify server certificate
return true;
}; …Run Code Online (Sandbox Code Playgroud)