Ssl
OpenLDAP TLS 配置 - 無法設置 TLS - 憑據無效
嗨,我正在Google上搜尋為什麼我嘗試更改開放 ldap 的 TLS 配置在訪問權限上失敗:
root@labm:~/slapd# more /root/slapd/tls.ldif dn: cn=config,dc=LDAPTEST,dc=NET add: olcTLSCertificateFile olcTLSCertificateFile: /etc/ldap/ssl/cert.pem - add: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/ldap/ssl/key.pem - add: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/ldap/ssl/cert.pem ldapmodify -x -D "cn=admin,dc=LDAPTEST,dc=NET" -W -f /root/slapd/tls.ldif Enter LDAP Password: modifying entry "cn=config" ldap_modify: Insufficient access (50)
失敗了,因為顯然我使用 admin 來更改配置條目。我找到了一篇關於相同問題的文章,解決方案是為配置數據庫設置一個 root 密碼,然後嘗試修改它。所以我為我的 mypassword 創建了一個雜湊並將其儲存在 changepwd.ldif 中:
slappasswd -h {SSHA} -s <mypassword> vi /root/slapd/changepwd.ldif dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}av9lfvBlCwBBETzHxxxxxxxxxxxxxxxx
成功修改了配置 olcRootPW(我在 /etc/ldap/slap.d/cn=config/ 文件中檢查了它)
ldapmodify -H ldapi:/// -Y EXTERNAL -D 'cn=config' -f /root/slapd/changepwd.ldif
但是,當我嘗試使用
cn=config
新的 mypassword 更改 TLS 設置時,嘗試在無效憑據上失敗:ldapmodify -x -D "cn=config,dc=LDAPTEST,dc=NET" -W -f /root/slapd/tls.ldif Enter LDAP Password: <mypassword> ldap_bind: Invalid credentials (49)
配置文件的內容是:
cat /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. # CRC32 175b5eb1 dn: olcDatabase={0}config objectClass: olcDatabaseConfig olcDatabase: {0}config olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external ,cn=auth manage by * break olcRootDN: cn=admin,cn=config structuralObjectClass: olcDatabaseConfig entryUUID: a965b54a-7586-1036-95d8-ad7092a067bf creatorsName: cn=config createTimestamp: 20170123070944Z olcRootPW:: e1NTSxxxxxxxxxxxxxxxxxxx entryCSN: 20170124144811.769576Z#000000#000#000000 modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth modifyTimestamp: 20170124144811Z
任何想法我做錯了什麼?
你需要:
sudo ldapmodify -H ldapi:/// -Y EXTERNAL -f /root/slapd/tls.ldif
(注意
sudo
)。配置數據庫中的訪問條件:
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external ,cn=auth manage by * break
EXTERNAL
表示如果 uidNumber 和 gidNumber 為零(即:它是 root),則允許使用方法進行身份驗證的使用者訪問 config db 。
EXTERNAL
auth 在這種情況下意味著您通過文件系統上的管道(ldapi:/// 方案)訪問目錄,並且作業系統根據您的使用者進行身份驗證/授權。這就是為什麼你需要root。
另請注意
dn
tls.ldif 文件必須更改為:dn: cn=config changetype: modify [...] # same as before
這
cn=config
是一個根命名空間,它不是數據命名空間的葉命名空間。