Безопасность Spring, ssl ldap и отсутствие сертификата - PullRequest
1 голос
/ 28 марта 2012

Я использую Spring Security для управления входом.Я настроил Spring Security для подключения к серверу ldap, который защищен с помощью ssl (ldaps).

Этот сервер является тестовым сервером и не имеет действительного сертификата.Когда я пытаюсь проверить логин, Spring Security жалуется, что сертификат не может быть проверен (конечно!):

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

Мой вопрос прост: я не хочу управлять каким-либо сертификатомхотел бы отключить проверку сертификата и продолжать использовать ssl ldap.Как я могу это сделать?

1 Ответ

13 голосов
/ 28 марта 2012

Похоже, что сертификат сервера LDAP является скорее самоконтролируемым, чем недействительным.

Для меня самым простым решением было бы получить этот сертификат и добавить его в хранилище доверия cacerts в java. Как только это будет сделано, код будет работать без каких-либо изменений.

Чтобы получить сертификат с сервера:

$ openssl s_client -showcerts -connect ldapserver:636

Вывод будет содержать количество записей, разделенных

-----BEGIN CERTIFICATE-----
aklfhskfadljasdl1340234234ASDSDFSDFSDFSDFSD
....
-----END CERTIFICATE-----

Скопировать последнюю запись сертификата в файл (ldapca.crt)

Затем добавьте его в хранилище ключей Java в $ JRE_HOME / lib / security

$ cd $JRE_HOME/lib/security
$ keytool -import -alias ldapca_self_sign -keystore cacerts -storepass changeit -file ldapca.crt

Это означает, что вы будете доверять сертификату на сервере LDAP и будете правильно использовать SSL в своей тестовой среде (вместо того, чтобы иметь какой-либо специальный код для отключения части проверки SSL).

Как только вы это сделаете (один раз), ваш код должен работать без каких-либо изменений.

...