Наше приложение работает с пользователями и группами Active Directory. Мы используем LDAP на порте 389 для операций Active Directory. Теперь один из наших клиентов хочет, чтобы мы добавили опцию для использования LDAP + SSL для связи в Active Directory.Как проверить SSL-сертификат сервера для подключения LDAP + SSL
Они сказали нам, что у них есть локальный ЦС, установленный в их домене, и используя самоподписанный сертификат для LDAPS. Они также сказали нам, что они предоставят сертификат, не требуя взаимного доверия, и мы должны использовать хранилище сертификатов Windows.
Я разработал тестовое приложение для операций LDAP + SSL и увидел, что сервер отправляет его сертификат, когда клиент инициирует соединение LDAP + SSL. Я могу установить соединение, только вернув true из метода проверки сертификата сервера.
Вопросы: - Какой сертификат (root, ceritificate, используемый для 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;
};
_connection.SessionOptions.QueryClientCertificate = (con, trustedCAs) => null;
_connection.Bind();
@ Lengyel, эти ответы действительно то, что я хочу, спасибо большое – NthDeveloper