閱讀本文以前,建議初學的小夥伴先看一下上一篇:完整的 LDAP + phpLDAPadmin安裝部署流程 (ubuntu18.04)php
接下來的操做承接上文,仍是在同一臺機器上。html
操做系統:Ubuntu18.04shell
如下正文:數據庫
安裝gnutls-bin
和ssl-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-certificates
。ui
爲服務器建立一個私鑰:
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副本(消費者)生成證書對,建立一個保存目錄(將用於最終傳輸)
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