web-dev-qa-db-ja.com

Liferayが認証にTLSを使用していることを確認するにはどうすればよいですか?

これはLiferayとLDAPサーバー間の通信に関するものであり、ユーザーのブラウザとLiferay間の通信に関するものではないことに注意してください

私はliferayフォーラムで30分で(自分以外の)ビューがゼロになったので、ここでこれを求めています。可能であれば、今日これを解決したいと思います...

私が見た:

http://www.liferay.com/community/wiki/-/wiki/Main/LDAP

http://www.liferay.com/community/wiki/-/wiki/Main/LDAP+integration

私もこれを読みました:

http://www.liferay.com/documentation/liferay-portal/6.1/user-guide/-/ai/ldap

そして、私はたくさんの検索を行い、CASを設定し、投稿でLDAPについて言及している多くの人々を見つけました。

問題は、私がCASの実装に(まだ?)興味がないことです。人々のためにデモサーバーをセットアップし、LDAP/AD資格情報を使用してログインできるようにしたいと思います。私(したがってliferay)が上記のパスワードを表示できるログインにアクセスできないため、バインドを選択しました。

私はこれがおかしいことを知っていますが、私は彼らのパスワードが平文で送られることも望んでいません。 :)

ライフレイのドキュメントのいずれも、ライフレイがTLSを開始することを保証する方法について説明していません。私はLDAPの専門家ではないので、おそらくこれはLDAPまたはADサーバーによって強制されますが、その場合でも、悪意のある従業員または悪意のあるネットワーク侵入者がライフレイのログイン要求を聞いて、みんなのものにアクセスするだけではありません。

私が読んだことから、現在のLDAP実装にとって正しいことは、クライアントが機密クエリのTLS通信を開始することです。

http://docs.Oracle.com/javase/jndi/tutorial/ldap/ext/starttls.html

それで、Liferayはこれを行いますか?それを有効にするために何か特別なものを設定する必要がありますか?

http://issues.liferay.com/browse/LEP-4225 グーグルで出てきて、これがLiferayに実装されているかどうかについて重大な疑問を投げかけるという事実(ただし、これは「古いライフレイ」に反対しています...)

基本的に、私は実際に知っている人に、何が利用できるか、何が利用できないか、LDAP/ADとの安全な通信を可能にするために何かをする必要があるかどうかを明確にするよう求めています。

現時点では、クライアント証明書やLDAPサーバーへのクライアント(liferay)の認証には関心がないことに注意してください。 LDAP/ADに認証を安全に委任するだけです。

EDIT:デフォルト設定で「testconnection」がパスワードをクリアテキストで送信することを(wiresharkで)確認したので、これは本当の問題のようです

編集2:ログイン試行でパスワードがクリアテキストで送信されることも確認しました。暗号化されたソリューションが明らかに必要です。

1
Gus

質問を読み間違えたように見えた後、元の回答を修正する-編集後、LDAP接続が意図されていることがより明確になります。

残念ながら、私は今のところ箱から出して良い答えを出すことはできませんが、うまくいけばいくつかの役立つポインタ:

SSLを介したLDAP接続を使用する場合、Tomcat(接続のイニシエーター)がLDAPサーバーが提示する証明書を信頼していることを確認する必要があります。ほとんどの場合、この証明書は既知の信頼できる機関によって発行されたものではありません(たとえば、自己署名されている可能性があります)。

SSLは暗号化を意味するだけでなく、相手側がそのように述べていることを信頼することも意味することを忘れないでください。中間者が暗号化された状態で自分自身に接続する可能性がある場合、暗号化に依存するのは愚かです。したがって、接続先のIDの証明が必要です。

「LDAPSSLJava」をグーグルで検索すると、Tomcatの仮想マシン(およびそのキーストア)を構成する方法の良い例と説明を提供する多くのヒットが得られます。はい、信頼を構成する必要があるのはVM)です。 http://docs.Oracle.com/javase/jndi/tutorial/ldap/security/ssl.html (導入段落に)基本的なポインタが含まれ、

JSSEをインストールして構成したら、使用するLDAPサーバーをクライアントが信頼していることを確認する必要があります。サーバーの証明書(またはそのCAの証明書)をJREの信頼できる証明書のデータベースにインストールする必要があります。これが例です。

# cd Java_HOME/lib/security
# keytool -import -file server_cert.cer -keystore jssecacerts

セキュリティツールの使用方法については、Java 2 Platform Security Trail of JavaTutorial。JSSEについては、JSSEリファレンスを参照してください。ガイド

基本的に:keytoolを使用しなかった場合は、LiferayVMでLDAPサーバーの証明書への信頼を設定していない可能性があります。それでは完了していないことを忘れないでください。keytoolで操作されたキーストアをVMに含める必要があります。ログファイルに信頼関連のエラーメッセージが表示されると思います。ログファイルや確立した信頼の種類に関する情報は提供していませんので、提供するか、さらに情報が必要な場合はお知らせください。

元の回答(LDAP接続を意味することを明確にする前):

Liferayのportal.propertiesのデフォルト構成を確認し、$ LIFERAY_HOME /portal-ext.propertiesでオーバーライドします。そこにデフォルト値があります

#
# Set this to true to ensure users login with https. If this is set to true
# and you want your HTTP session to contain your credentials after logging
# in, then the property "session.enable.phishing.protection" must be set to
# false or your credentials will only be available in the HTTPS session.
#
company.security.auth.requires.https=false

これをtrueに設定すると、必要なものがすべて揃っている可能性があります。

もちろん、これは、httpsがすでに正しく設定され、実行されていることを前提としています(たとえば、 https:// localhost / またはサーバーが存在する場所(または https:// localhost :844 カスタムポート8443を使用する場合)これを行う方法は、アプリケーションサーバーの構成の問題です。https経由でアクセスしたときにLiferayが正しく応答したら、残りを強制できます。

0
Olaf

アプリケーション必須最新のプロフェッショナル品質のディレクトリサーバーにはパスワードの品質とパスワードの履歴をチェックする機能があるため、パスワードの変更と認証のために、安全な接続を介してパスワードを平文で送信する必要があります。事前にエンコードされたパスワードは、品質や履歴を確認できません。このため、正しく構成されたディレクトリサーバーは、事前にエンコードされたパスワードを受け入れません。

0
Terry Gardner