2013-06-27 17 views
0

мне пришлось включить SSL через сервер Active Directory, чтобы сделать это я последовал за каждый упомянутые здесь шаги: http://www.linuxmail.info/enable-ldap-ssl-active-directory/проблемы при подключении к серверу AD через SSL?

Теперь я не уверен, что если SSL действительно включен правильно?

На самом сервере, если я запускаю ldp, я могу подключиться к порту 636. Однако в моей системе я не вижу вариант SSL на клиенте ldp?

У меня есть два других LDAP-клиента (Softerra LDAP Browser и Apache Directory Studio), но я не могу подключиться с помощью ldaps (на порте 636). Я предполагаю, что мне нужно будет импортировать сертификат, используемый на сервере AD, чтобы эти инструменты могли доверять этому сертификату самописца, который я использовал на сервере AD.

Используя код Java, я добавил сертификат в cacerts (получил сертификат, используя указанные здесь шаги: http://www.linuxmail.info/export-ssl-certificate-windows-2003/), однако я до сих пор не могу подключиться к AD с использованием SSL.

Я попытался SSL, а также TSL:

TLS:

// got LdapContext using ldap (not with ldaps) 
StartTlsResponse tls = (StartTlsResponse)ctx.extendedOperation(new StartTlsRequest()); 

Это дает следующее исключение:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 

SSL:

String ldapURL = "ldaps://<domain-name>:636"; 
String keystore = "C:/Oracle/Middleware/jdk160_24/jre/lib/security/cacerts"; 
System.setProperty("javax.net.ssl.trustStore",keystore); 
env.put(Context.SECURITY_PROTOCOL,"ssl"); 
// other properties are set in env 
LdapContext ctx = new InitialLdapContext(env, null); 

Это дает следующее исключение :

javax.naming.CommunicationException: <domain-name>:636 [Root exception is java.net.ConnectException: Connection timed out: connect] 

Может кто-нибудь предложить, где я ошибаюсь?

Спасибо.

ответ

1

Это один был зафиксирован.

Я использовал неправильную (довольно неполную) команду для импорта сертификата.

я использовал:

keytool -import -alias mycert -keystore cacerts -file d:\mycert.cer 

Когда я follwing:

keytool -import -noprompt -trustcacerts -alias mycert -file c:/mycert.cer -keystore C:/Oracle/Middleware/jdk160_24/jre/lib/security/cacerts -storepass changeit 

И он начал работать.

0

Если вы не можете заставить TLS работать, маловероятно, что SSL будет работать. Вы уверены, что получили правильный сертификат и правильно настроили хранилище ключей? Основываясь на исключении SSLHandshakeException при попытке использовать TLS, похоже, что он может быть настроен неправильно.

Проверьте этот SO ответ на некоторые советы о том, как убедиться, что хранилище ключей правильно настроен: https://stackoverflow.com/a/9619478/1792088

+0

благодарит Мэтью, да, я могу сказать, что импортный сертификат не должен был ошибаться. Я использовал ту же команду для этого. –

+0

мне кажется, что это проблема: либо SSL не включен должным образом, либо я импортирую неправильный сертификат в cacarts. однако я следил за процессом, упомянутым в ссылках выше, и не получил никакой ошибки как таковой. –