原文發表於cu:2016-07-04html
參考文檔:算法
Server:基於CentOS-7-x86_64-1511 數據庫
Server IP: 172.18.12.203 vim
OpenLDAP:openldap-2.4.44已安裝安全
#理論上只須要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解決。 tcp
可使用"/usr/local/openldap-2.4.44/libexec/slapd"命令查看執行命令是否關聯相應libraries,上面就是經過此方法定位故障點的:http://comments.gmane.org/gmane.network.openldap.technical/874 ide
OpenLDAP with TLS/SSL默認使用tcp 636端口,提早在iptables放行。ui
在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/
#帶上」-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
#利用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
#同上,可帶"-des3"參數,同步驟(1) [root@localhost certs]# openssl genrsa -out ldapkey.pem 2048
#請求文件須要發給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
#若是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
#須要將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
#主要涉及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/
#能夠在文件最後添加步驟(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
#」-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
[root@localhost ~]# netstat –tunlp
1) 修改已經過389端口可訪問數據庫的屬性:數據庫名,右鍵-->Properties;加密
2) 修改389端口爲636端口;