TrustStore и повторное появление «невозможно найти действительный путь сертификации к запрошенной цели» - PullRequest
0 голосов
/ 26 августа 2011

Я пытаюсь использовать Spring Security для аутентификации пользователей в Active Directory.До сих пор я использовал протокол LDAP, но теперь я хотел бы использовать LDAPS.

Я следовал этой статье http://blogs.oracle.com/gc/entry/unable_to_find_valid_certification, и она работает.Мне удалось связать пользователя с AD успешно с помощью LDAPS.

Но через некоторое время (15-30 минут), когда я пытаюсь войти в систему, я получаю это исключение снова:

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:318)

и тогда я больше не могу использовать LDAPS.Я попытался:

  • перезапустить tomcat
  • добавить сертификат непосредственно в cacerts
  • запустить tomcat с путем к trustStore с помощью свойства env -Djavax.net.ssl.trustStore

Единственное, что работает, - это полное воссоздание jssecacerts.Недостаточно просто скопировать существующие jssecacerts в jre / lib / security, это ДОЛЖЕН быть новый файл.Я просто не понимаю ...

Моя среда: java 1.6.0_26, tomcat 7.0.20, весна 3.0.5, безопасность весны 3.1RC2

Я что-то не так делаю?

Спасибо

1 Ответ

0 голосов
/ 30 августа 2011

Хорошо, так что я, вероятно, нашел решение.Я не знал, что за одним URL-адресом Active Directory много физических машин :) Когда я использовал InstallCert, он переписал и создал новое хранилище ключей только с одним текущим сертификатом.Это было причиной, почему это иногда работало, а иногда нет.Я также обнаружил, что все сертификаты подписаны одним центром сертификации.После добавления сертификата CA в trustStore он наконец-то начал работать.

...