Ldap

如何確保 Liferay 使用 TLS 進行身份驗證

  • February 24, 2012

請注意,這是關於 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)查看所述密碼的登錄名。

我知道這很瘋狂,但我也不希望他們的密碼被明文發送。:)

沒有一個 liferay 文件討論如何確保 liferay 啟動 TLS。我不是 LDAP 專家,所以也許這通常是由 LDAP 或 AD 伺服器強制執行的,但即使在這種情況下,如果文件說明如何確保邪惡的員工或邪惡的網路入侵者可以不要簡單地聽生命射線登錄請求來訪問每個人的東西。

根據我的閱讀,目前 LDAP 實現的正確做法是讓客戶端為敏感查詢啟動 TLS 通信

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

那麼Liferay 會這樣做嗎?我需要配置任何額外的東西來啟用它嗎?

當我用Google搜尋時,http: //issues.liferay.com/browse/LEP-4225出現的事實引發了對這是否在 Liferay 中實現的重大懷疑(但我注意到這是針對“舊的 liferay”。 ..)

基本上,我要求一個真正了解的人來澄清什麼是/不可用的,以及我是否需要做任何事情來啟用與 LDAP/AD 的安全通信。

請注意,此時我對客戶端證書或以其他方式向 LDAP 伺服器驗證客戶端 (liferay) 不感興趣。只需將身份驗證安全地委派給 LDAP/AD。

**編輯:**我剛剛確認(使用wireshark)在預設配置中“測試連接”以明文形式發送我的密碼,所以這似乎是一個真正的問題

**編輯 2:**還確認登錄嘗試以明文形式發送密碼。加密解決方案顯然是必要的。

在我似乎誤讀了問題後更正了我的原始答案- 編輯後更清楚的是 LDAP 連接的含義。

不幸的是,我現在不能立即給出一個好的答案,但希望有一些有用的指示:

當您通過 SSL 使用 LDAP 連接時,您需要確保 tomcat(連接的發起者)信任 LDAP 伺服器提供的證書。該證書很可能不是由已知且受信任的機構頒發的(例如,它可能是自簽名的)。

請記住,SSL 不僅意味著加密,而且還信任另一端,它就是它所說的:如果任何中間人可以使您連接到自己,那麼依賴加密將是愚蠢的,加密。因此,您需要一些您所連接的人的身份證明。

當你在Google上搜尋“LDAP SSL Java”時,你會得到很多關於如何配置 tomcat 的虛擬機(及其密鑰庫)的很好的例子和解釋。是的,這是您需要為其配置信任的虛擬機。http://docs.oracle.com/javase/jndi/tutorial/ldap/security/ssl.html包含基本指針(在介紹性段落中),說明

安裝和配置 JSSE 後,您需要確保客戶端信任您將使用的 LDAP 伺服器。您必須在 JRE 的可信證書數據庫中安裝伺服器的證書(或其 CA 的證書)。這是一個例子。

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

有關如何使用安全工具的資訊,請參閱 Java 教程的 Java 2 Platform Security 跟踪。有關 JSSE 的資訊,請閱讀 JSSE 參考指南

基本上:如果您沒有使用 keytool,您可能還沒有在 Liferay VM 中設置對 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/或您的伺服器所在的任何地方(如果您使用自定義埠 8443,則為https://localhost: 8443)。你如何做到這一點是配置你的應用伺服器的問題。一旦 Liferay 在你通過 https 訪問它時正確回答,你就可以強制執行其餘的。

引用自:https://serverfault.com/questions/360851