2012-03-28 14 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

おかげさまで、それは良いようです。私は試してみます –