一,大致流程。
? ? ? ? 1.首先在Linux上搭建一個LDAP服務器 2.在LDAP服務器上安裝CA證書,服務器證書,因為SSL/TLS,start?tls都屬于機密通信,需要客戶端和服務器都存在一個相同的證書認證雙方的身份。3.安裝phpldapadmin工具,為我們提供一個可視化操作的LDAP服務器界面,讓我們能夠方便去管理用戶,組織。4.通過TLS和start?tls和連接到LDAP服務器。
? ? ? ? 2.提交了解,新手必看。首先你在執行下述安裝LDAP搭建之前,創建一個新的ubuntu的作為你的服務器的載體。其次,你新建的這個ubuntu的IP地址就是你LDAP服務器的IP地址,默認服務器管理員賬戶名為admin。鬼知道我之前找IP地址和管理員賬戶在配置文件里面扒拉了多少時間。
二.搭建LDAP服務器
三.搭配CA證書,服務器證書
? ? ? ? 二,三兩個步驟我就不寫了,這兩個文章在這位大佬里面的博客寫得非常詳細,直接粘貼復制這位大佬的命令就行了。然后我會解決大佬文章中出現的一個錯誤,應該是版本更迭原因。
? ? ? ? 大佬的文章做到"配置OpenLDAP以使用證書和密鑰"這一步時,他在保存addcerts.ldif后直接執行了寫入配置文件這條命令。
經過我多次測試,如果在執行這條命令前不執行重啟Openldap服務:sudo service slapd force-reload這條命令的話,會報出ldap_modify: Other (e.g., implementation specific) error (80)這樣的錯誤,當你保存addcerts.ldif這個文件之后,正確的執行命令應當是。
sudo service slapd force-reload
sudo ldapmodify -H ldapi:// -Y EXTERNAL -f addcerts.ldif
sudo service slapd force-reload
?修改配置文件,開啟SSL\TLS和Start TLS認證
sudo?vim?/etc/default/slapd
SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///" //手動開始服務器支持TLS和SSL,前提是你的證書和私鑰全部安裝完畢;ldapi表示開啟Start TLS認證,ldaps表示開啟SSL\TLS認證
sudo vim /etc/ldap/ldap.conf
在文件中添加下面兩行數據
TLS_REQCERT try //表示強制開啟client驗證服務器的證書,如果改為allow,可以通過IP連接到服務器
TLS_CACERT /etc/ldap/ca_certs.pem //指定證書的位置
四,安裝phpldapadmin工具(不需要可視化界面的可以直接跳到第五步,不影響連接到LDAP服務器)
????????搭載phpldapadmin,phpldapdamin,這是一個可視化的LDAP服務器操作頁面,能夠更好的管理LDAP服務器。
1.安裝phpldapadmin工具包
sudo apt-get?install?-y?phpldapadmin
2.安裝成功之后檢查對應的配置文件,紅色為修改部分
sudo vim /etc/phpldapadmin/config.phphp? ? //打開配置文件
$servers->setValue('server'. 'host', '127.0.0.1') //第三個參數修改為本地環回地址,一般都是這個
$servers->setValue('server'. 'base', array('dc=example,dc=com')) //填寫域名,我的是example.com
$servers->setValue('login', 'bind_id', 'cn=admin,dc=example,dc=com') //管理員名+域名 上訴步驟均沒有指定管理員名,服務器的默認管理員名均為admin
保存退出
3. 配置文件修改之后配置防火漆:防火墻放行Apache2
Ubuntu命令行執行以下3條命令
ufw?allow?"Apache"
ufw?allow?"Apache?Full"
ufw?allow?"Apache?Secure"
?4 重啟服務器
sudo /etc/init.d/apache2 restart
5.將http:///phpldapadmin 替換為LDAP服務器的IP地址,將這個放到任意一個游覽器中運行,點擊左側登錄會出現以下畫面進行登錄
?6.3.6 登錄成功之后進入以下畫面
?五,連接到AD服務器
?1.驗證是否配置成功Strat TLS認證
????????這里的ldap://ldap.example.com 必須使用域名,不可以使用IP地址,因為client驗證服務器的證書使用的是域名而不是IP地址,如果形式變為ldap://192.168.45.xxx 的形式,就不能連接到服務器。除非你將TLS_REQCERT try改為TLS_REQCERT allow(表示不強制開啟client驗證服務器的證書)。
ldapwhoami -H ldap://ldap.example.com -x -ZZ? ?//-ZZ表示強制使用Strat TLS
如果成功,那么你將會看見
anonymous
如果失敗,請檢查以下
1. /etc/ldap/ldap.conf中指定的證書路徑是否正確TLS_CACERT /etc/ldap/ca_certs.pem
2.證書內容是否在復制過程中,多了空格,換行,建議直接復制文件
3.服務器的/etc/default/slapd文件中的SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"字段是否有ldapi:///內容,如果沒有則添加,修改完配置文件之后,重啟服務
sudo service slapd force-reload 。
4.如果以上3步全部正確,依舊無法連上,嘗試在client的/etc/hosts加上反向域名解析:
sudo vim /etc/hosts
#添加方向域名解析
127.0.1.1 ldap.example.com ldap
127.0.0.1 localhost
192.168.45.147 ldap.example.com
2.遠程客戶端通過SSL\TLS連接到服務器
?ldapwhoami -H ldaps://ldap.example.com -x
?如果成功
?anonymous
?失敗的話請查看Strat TLS中提到的錯誤檢查,如果Strat TLS已經成功了,而你的SSL\TLS失敗了,就只有/etc/default/slapd文件中的SLAPD_SERVICES字段沒有添加ldaps:///