LDAP系列(二)配置LDAP啓動TLS

配置LDAP啓動TLS

閱讀本文以前,建議初學的小夥伴先看一下上一篇:完整的 LDAP + phpLDAPadmin安裝部署流程 (ubuntu18.04)php

接下來的操做承接上文,仍是在同一臺機器上。html

操做系統:Ubuntu18.04shell

如下正文:數據庫

安裝gnutls-binssl-cert軟件包ubuntu

root@cky:~# apt install gnutls-bin ssl-cert -y

爲證書頒發機構建立私鑰:api

root@cky:~# certtool --generate-privkey --bits 4096 --outfile /etc/ssl/private/mycakey.pem

建立模板/文件/etc/ssl/ca.info以定義CA:服務器

root@cky:~# cat /etc/ssl/ca.info
cn = Xcdata Company
ca
cert_signing_key
expiration_days = 3650

建立自簽名的CA證書:app

root@cky:~# certtool --generate-self-signed \
--load-privkey /etc/ssl/private/mycakey.pem \
--template /etc/ssl/ca.info \
--outfile /usr/local/share/ca-certificates/mycacert.crt

運行update-ca-certificates以將新的CA證書添加到受信任的CA列表中。請注意添加的一個CA:測試

root@cky:~# update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

這還會在中建立一個/etc/ssl/certs/mycacert.pem指向實際文件的符號連接/usr/local/share/ca-certificatesui

爲服務器建立一個私鑰:

root@cky_dev:~# certtool --generate-privkey \
--bits 2048 \
--outfile /etc/ldap/company_ldap_slapd_key.pem

** Note: You may use '--sec-param Medium' instead of '--bits 2048'
Generating a 2048 bit RSA private key...

建立/etc/ssl/company_ldap.info包含如下內容的信息文件:

organization = Company
cn = company.com
tls_www_server
encryption_key
signing_key
expiration_days = 365

以上證書有效期爲1年,僅對company.com主機名有效。

建立服務器的證書:

root@cky:~# certtool --generate-certificate \
--load-privkey /etc/ldap/company_ldap_slapd_key.pem \
--load-ca-certificate /etc/ssl/certs/mycacert.pem \
--load-ca-privkey /etc/ssl/private/mycakey.pem \
--template /etc/ssl/company_ldap.info \
--outfile /etc/ldap/company_ldap_slapd_cert.pem

調整權限和全部權:

root@cky:~# chgrp openldap /etc/ldap/company_ldap_slapd_key.pem
root@cky:~# chmod 0640 /etc/ldap/company_ldap_slapd_key.pem

如今服務器準備接受新的TLS配置。

建立certinfo.ldif文件

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/mycacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/company_ldap_slapd_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/company_ldap_slapd_key.pem

使用ldapmodify命令經過slapd-config數據庫告訴slapd咱們的TLS工做:

root@cky:~/ldap# ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

最後檢查個文件

root@cky:~/ldap# grep -e '^SLAPD_SERVICES' /etc/default/slapd 
SLAPD_SERVICES="ldap:/// ldapi:///"

由於咱們不須要使用 ldaps://,而推薦使用StartTLS。後者指的是已由TLS / SSL保護的現有LDAP會話(在TCP端口389上監聽),而LDAPS像HTTPS同樣,是一種獨特的從頭開始加密的協議,它在TCP端口636上運行。

OpenLDAP副本的證書

要爲OpenLDAP副本(消費者)生成證書對,建立一個保存目錄(將用於最終傳輸)

root@cky:~# mkdir /mnt/ldap02-ssl
root@cky:~# cd /mnt/ldap02-ssl/
root@cky:/mnt/ldap02-ssl# pwd
/mnt/ldap02-ssl

root@cky_dev:/mnt/ldap02-ssl# certtool --generate-privkey \
--bits 2048 \
--outfile company_ldap02_slapd_key.pem

** Note: You may use '--sec-param Medium' instead of '--bits 2048'
Generating a 2048 bit RSA private key...

爲消費者服務器建立一個信息文件ldap02.info

organization = Company
cn = company02.com
tls_www_server
encryption_key
signing_key
expiration_days = 365

建立消費者證書:

root@cky:/mnt/ldap02-ssl# certtool --generate-certificate \
--load-privkey company_ldap02_slapd_key.pem \
--load-ca-certificate /etc/ssl/certs/mycacert.pem \
--load-ca-privkey /etc/ssl/private/mycakey.pem \
--template ldap02.info \
--outfile company_ldap02_slapd_cert.pem

獲取CA證書的副本

root@cky:/mnt/ldap02-ssl# cp /etc/ssl/certs/mycacert.pem .

如今將ldap02-ssl目錄轉移到使用者。(若是是多節點能夠scp,如今是單節點測試,就直接本地搞了)

root@cky:/mnt/ldap02-ssl# cp company_ldap02_slapd_cert.pem company_ldap02_slapd_key.pem /etc/ldap/
root@cky:/mnt/ldap02-ssl# chgrp openldap /etc/ldap/company_ldap02_slapd_key.pem
root@cky:/mnt/ldap02-ssl# chmod 0640 /etc/ldap/company_ldap02_slapd_key.pem
root@cky:/mnt/ldap02-ssl# cp mycacert.pem /usr/local/share/ca-certificates/mycacert.crt
root@cky:/mnt/ldap02-ssl# update-ca-certificates

建立certinfo.ldif具備如下內容的文件

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/mycacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/company_ldap02_slapd_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/company_ldap02_slapd_key.pem

配置slapd-config數據庫:

root@cky:/mnt/ldap02-ssl# ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif

報錯

root@cky:/mnt/ldap02-ssl# ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
ldap_modify: Inappropriate matching (18)
        additional info: modify/add: olcTLSCACertificateFile: no equality matching rule

一番百度google以後,更改certinfo.ldif,將add改爲了replace

dn: cn=config
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/mycacert.pem
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/company_ldap02_slapd_cert.pem
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/company_ldap02_slapd_key.pem

再跑一次(此處diss一下ubuntu的官方文檔

root@cky:/mnt/ldap02-ssl# ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif     
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

加個解析

# file : /etc/hosts
xxx.xxx.xxx.xxx    company02.com

測試

root@cky:/mnt/ldap02-ssl# ldapwhoami -x -ZZ -h company02.com
anonymous
相關文章
相關標籤/搜索