2012-03-28 5 views
1

나는 스프링 보안을 사용하여 로그인을 관리합니다. 필자는 SSL 보안을 ssl (ldaps)로 보안 화 된 ldap 서버에 연결하도록 구성했습니다.스프링 보안, ssl ldap 및 인증서 없음

이 서버는 테스트 서버이며 유효한 인증서가 없습니다. 내가 로그인을 테스트 할 때 스프링의 보안 인증서가 확인할 수없는 불평 (물론!) :

가 이 에게 내 질문은 간단하다

sun.security.validator.ValidatorException: PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: unable to find 
valid certification path to requested target 
: 나는 인증서의 종류를 관리하지 않는, 내가 좋아하는 것 인증서 검사를 비활성화하고 ssl ldap을 계속 사용합니다. 어떻게해야합니까?

답변

11

LDAP 서버 인증서가 유효하지 않은 자체 인증서임을 알 수 있습니다.

가장 간단한 해결책은 해당 인증서를 가져 와서 Java의 cacerts 트러스트 스토어에 추가하는 것입니다. 완료되면 코드가 수정되지 않고 실행됩니다.

$ openssl s_client -showcerts -connect ldapserver:636 

출력 파일 (ldapca.crt)에

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

복사 마지막 인증서 항목으로 구분 된 항목의 수를 포함

:

서버에서 인증서를 얻으려면

그런 다음 $ JRE_HOME/lib/security의 java 키 저장소에 추가하십시오.

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

즉, LDAP 서버의 인증서를 신뢰할 수 있으며 일부 SSL을 검사하지 않도록 사용자 지정 코드를 사용하지 않고 테스트 환경에서 SSL을 올바르게 사용하고 있음을 의미합니다.

코드를 수정했으면 코드를 실행해야합니다 (한 번).

+1

답변 해 주셔서 감사합니다. 그 문제는 : 나는 maven과 svn을 사용하는 팀과 함께 일합니다. 각 개발자가 이러한 종류의 절차를 수행하지 않도록하고 싶습니다. 스프링 구성을 사용하는 쉬운 방법이 있습니까? –

+1

별도의 트러스트 스토어 파일을 만들 수 있습니다 (기본적으로 동일한 'keytool' 명령을 다른 파일 이름으로 사용하여 SVN에 파일을 추가 한 후 다음 단계를 따르십시오). http://stackoverflow.com/questions/6431383/using-spring- ldap-with-ssl 그러나 개인적으로 각 개발자에게 전자 메일을 보내고 ldapca.crt 파일을 첨부하여 명령을 실행하도록 할 것입니다. 필자는 테스트하지 않은 코드가없는 것의 이점을 생각합니다. in-your-codebase는 한 번 명령을 실행해야하는 개발자의 편의를 능가합니다. – beny23

+0

감사합니다. –