OpenLDAP配置TLS加密傳輸


原文發表於cu2016-07-04

參考文檔:

  1. 基於OpenSSL自建CA與頒發SSL證書:http://seanlook.com/2015/01/18/openssl-self-sign-ca/
  2. OpenLDAP with TLS:http://my.oschina.net/aiguozhe/blog/151554

一.環境

Server:基於CentOS-7-x86_64-1511

Server IP: 172.18.12.203

OpenLDAP:openldap-2.4.44已安裝

二.准備工作

1. 依賴包

#理論上只需要openssl與openssl-devel
yum install *openssl* -y

openldap編譯需要開啟"--with-tls"選項,可通過"./configure --help"查看相關說明,請參考:http://www.cnblogs.com/netonline/p/7486832.html

openssl相關依賴包一定要安裝在openldap安裝之前,在openldap安裝之后再yum安裝openssl相關依賴包,運行ldaps命令時時報" 573d212b daemon: TLS not supported (ldaps://0.0.0.0:636/)"錯(如下圖),安裝openssl相關包之后重新編譯安裝openldap解決。

可以使用"/usr/local/openldap-2.4.44/libexec/slapd"命令查看執行命令是否關聯相應libraries,上面就是通過此方法定位故障點的:http://comments.gmane.org/gmane.network.openldap.technical/874

2. iptables

OpenLDAP with TLS/SSL默認使用tcp 636端口,提前在iptables放行。

三.配置TLS

在OpenLDAP的home目錄創建1個子目錄,后續操作均在此目錄進行
[root@localhost ~]# cd /usr/local/openldap-2.4.44
[root@localhost openldap-2.4.44]# mkdir -p certs
[root@localhost openldap-2.4.44]# cd certs/

1. CA中心操作(如已有CA證書則跳過)

生成CA根密鑰(1)

#帶上”-des3”參數時,創建的私鑰采取Triple DES算法加密,命令執行后會要求輸入密碼,這樣后續在調用此密鑰時都會要求輸入密碼,如 “openssl genrsa -des3 -out ca-key.pem 2048”,這里為了方便省略此參數
[root@localhost certs]# openssl genrsa -out cakey.pem 2048

#可以查看生成的rsa 私鑰
[root@localhost certs]# openssl rsa -noout -text -in cakey.pem

#option選項,基於安全性考慮,建議修改根密鑰權限為600或400
[root@localhost certs]# chmod 600 cakey.pem

生成CA根證書(2)

#利用req命令與CA根證書生成自簽署的根證書,證書有效期1年;
#生成證書時,上方紅色粗體字部分是要求輸入的信息,其中需要注意的是”Common Name”請填寫服務器域或IP
[root@localhost certs]# openssl req -new -x509 -days 365 -key cakey.pem -out ca.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Sichuan
Locality Name (eg, city) [Default City]:Chengdu
Organization Name (eg, company) [Default Company Ltd]:SYS
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:172.18.12.203
Email Address []:xxx@sys.com #可以查看生成的根證書
[root@localhost certs]# openssl x509 -noout -text -in ca.crt

2. OpenLDAP服務器端操作

生成OpenLDAP服務器私鑰(3)

#同上,可帶"-des3"參數,同步驟(1)
[root@localhost certs]# openssl genrsa -out ldapkey.pem 2048

生成OpenLDAP服務器證書簽署請求文件(4)

#請求文件需要發給CA中心簽署生成證書,相當於公鑰;
#同步驟(2)會要求輸入一些信息,相對於步驟(2)額外的信息可忽略
[root@localhost certs]# openssl req -new -key ldapkey.pem -out ldapserver.csr

#查看請求文件
[root@localhost certs]# openssl req -noout -text -in ldapserver.csr

3. CA中心簽署證書

簽署證書的准備工作 (5)

#如果CA中心准備工作已經做好,此步可跳過。
[root@localhost certs]# cp /etc/pki/tls/openssl.cnf ./
[root@localhost certs]# mkdir -p newcerts
[root@localhost certs]# touch index.txt
[root@localhost certs]# echo "00" > serial

#修改第42行,證書生成配置文件的工作目錄”dir    =/etc/pki/CA”修改為當前配置文件工作的目錄,如下:
[root@localhost certs]# vim openssl.cnf
42 dir             = /usr/local/openldap-2.4.44/certs

簽署證書(6)

#需要將OpenLDAP服務器生成的csr請求文件發給CA中;
#生成證書會有兩次確認,”y”即可;
#如果重新簽署證書,需要先將index.txt的內容用index.txt.old還原
[root@localhost certs]# openssl ca -days 365 -cert ca.crt -keyfile cakey.pem -in ldapserver.csr -out ldapserver.crt -config openssl.cnf

4. 復制證書/密鑰到工作目錄(7)

#主要涉及CA中心的證書,CA中心為OpenLDAP服務器簽署的證書與私鑰
[root@localhost certs]# mkdir -p /usr/local/openldap-2.4.44/etc/openldap/cacerts
[root@localhost certs]# cp ca.crt /usr/local/openldap-2.4.44/etc/openldap/cacerts
[root@localhost certs]# cp ldapserver.crt /usr/local/openldap-2.4.44/etc/openldap/
[root@localhost certs]# cp ldapkey.pem /usr/local/openldap-2.4.44/etc/openldap/

5. 修改OpenLDAP主配置文件slapd.conf(8)

#可以在文件最后添加步驟(7)中證書/密鑰的工作路徑
[root@localhost certs]# cd /usr/local/openldap-2.4.44/etc/openldap/
[root@localhost openldap]# vim slapd.conf
TLSCACertificateFile /usr/local/openldap-2.4.44/etc/openldap/cacerts/ca.crt
TLSCertificateFile /usr/local/openldap-2.4.44/etc/openldap/ldapserver.crt
TLSCertificateKeyFile /usr/local/openldap-2.4.44/etc/openldap/ldapkey.pem

6. 啟動LDAPS

#”-d 256”是為debug,后台運行不需要;
[root@localhost ~]# /usr/local/openldap-2.4.44/libexec/slapd -h “ldaps://0.0.0.0:636/” -d 256

#或者:[root@localhost ~]# /usr/local/openldap-2.4.44/libexec/slapd -h “ldaps:///” -d 256

#或者同時啟動389與636端口:[root@localhost ~]# /usr/local/openldap-2.4.44/libexec/slapd -h “ldap:/// ldaps:///” -d 256

7. 啟動驗證

[root@localhost ~]# netstat –tunlp 

8. 通過ldapdmin驗證

1) 修改已通過389端口可訪問數據庫的屬性:數據庫名,右鍵-->Properties;

2) 修改389端口為636端口;

3) 彈出窗口提示,選擇" View Certificate",點擊"Yes";

4) 可以查看證書相關信息,選擇"安裝證書",一路默認"下一步";

5) 證書導入成功;

6) 通過636端口已可以訪問數據庫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM