Security

使用 Active Directory 進行安全 LDAP 身份驗證

  • March 14, 2011

我們正在開發一個 web 項目,我們需要能夠綁定到一個活動目錄域,然後將使用者的憑據傳遞給域,以確保使用者在我們允許他們訪問我們的一個 web 應用程序之前已成功通過身份驗證。我們的 HTTPS 工作正常,前端可以接受憑據。我們遇到的問題是我們的伺服器和活動目錄伺服器之間的連接。Active Directory 伺服器由我們 IT 部門的不同部門維護,我們無權訪問它。此活動目錄伺服器使用自簽名證書並且沒有完全限定的域名(即 people.local)。

我讀過很多關於將 TLS_REQCERT 變數設置為從不的地方;但是,我擔心中間人攻擊,並且以這種方式設置設置讓我感到不舒服。我也讀過一些文章,談到能夠從 Linux 命令行查詢活動目錄伺服器,查看自簽名證書,將自簽名證書保存到本地 Linux 伺服器,然後使用此證書進行信任這樣您就不必將 TLS_REQCERT 設置為從不。我不確定如何從 Linux 命令行查看和保存自簽名證書。我有一些我們正在執行的 CentOS 伺服器,我們需要在這些伺服器上進行操作。

您可以提供的任何幫助將不勝感激。提前致謝。

我讀過很多關於將 TLS_REQCERT 變數設置為從不的地方;但是,我擔心中間人攻擊,並且以這種方式設置設置讓我感到不舒服。

您在考慮安全性和理解設置 TLS_REQCERT 的含義方面都值得稱讚。

我還閱讀了一些關於能夠從 Linux 命令行查詢活動目錄伺服器、查看自簽名證書、將自簽名證書保存到本地 Linux 伺服器的文章……

您可以使用該openssl工具來執行此操作。假設您可以通過 LDAP-over-SSL 在埠 636 上訪問 Active Directory,您可以這樣做:

openssl s_client -connect server.example.com:636 > output < /dev/null

當命令完成時,您會發現輸出包含 PEM 編碼證書等內容:

00000003)
---
Certificate chain
0 s:/CN=dc1.example.com
  i:/DC=com/DC=example/DC=dc1/CN=example-DC1-CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGjDCCBXSgAwIBAgIKOxasfwAAAAAADDANBgkqhkiG9w0BAQUFADBaMRMwEQYK
...
-----END CERTIFICATE-----
...

您可以刪除該行之前的所有內容以及該BEGIN CERTIFICATE行之後的所有內容,END CERTIFICATE LINE並且您應該擁有所需的內容。

AD 伺服器也可能沒有使用自簽名證書,而是使用 AD 證書頒發機構頒發的證書。如果是這種情況,向 AD 人員詢問 CA 證書可能更容易。

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