Ssl-Certificate

有些系統無法通過 ldaps 連接到 ldap,但其他系統可以,是萬用字元證書嗎?

  • March 3, 2016

當試圖與我的 Novel eDirectory 8.8 伺服器建立 ldaps 連接時,有時我必須放入TLS_REQCERT never客戶端伺服器的 ldap.conf 文件。顯然,這是一個壞主意。

我執行的命令是這樣的,帶有實際工作的憑據……

ldapsearch -x -H ldaps://ldapserver -b 'ou=active,ou=people,dc=example,dc=org' -D 'cn=admin,dc=example,dc=org' -W "cn=username"

在 Ubuntu 13.10 上,它執行良好。

在 SLES 上它工作正常。

在 CentOS 6.5 上,它返回:

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

現在,我導入的證書是從 DigiCert 購買的萬用字元證書。我的同事發現一些報告表明某些系統存在萬用字元問題。

那麼,萬用字元證書是罪魁禍首嗎?如果是這樣,我該如何解決?

如果它不是萬用字元證書,那麼它是什麼?

按照 Andrew Schulman 的建議,我添加-d1了我的 ldapsearch 命令。這是我最終得到的結果:

ldap_url_parse_ext(ldaps://ldap.example.org)
ldap_create
ldap_url_parse_ext(ldaps://ldap.example.org:636/??base)
Enter LDAP Password: 
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP ldap.example.org:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 10.225.0.24:636
ldap_pvt_connect: fd: 3 tm: -1 async: 0
TLS: certdb config: configDir='/etc/openldap' tokenDescription='ldap(0)' certPrefix='cacerts' keyPrefix='cacerts' flags=readOnly
TLS: cannot open certdb '/etc/openldap', error -8018:Unknown PKCS #11 error.
TLS: could not get info about the CA certificate directory /etc/openldap/cacerts - error -5950:File not found.
TLS: certificate [CN=DigiCert High Assurance EV Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US] is not valid - error -8172:Peer's certificate issuer has been marked as not trusted by the user..
TLS: error: connect - force handshake failure: errno 2 - moznss error -8172
TLS: can't connect: TLS error -8172:Peer's certificate issuer has been marked as not trusted by the user..
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

從那句話看,CentOS 不信任 DigiCert?還是 CentOS 沒有受信任的發行者列表?

ldapsearch 正在 /etc/openldap/cacerts 中查找其受信任的 CA 證書的儲存,並且顯然沒有設置,因此它拒絕證書,因為它無法為其建構信任鏈。如果 ldapsearch 使用 OpenSSL,它需要一個“hashdir”格式的集合,例如由 Red Hat“authconfig”程序產生的,或者一個包含受信任證書的平面列表的單個文件。此處對“moznss”的引用表明此 ldapsearch 是針對 Mozilla NSS 建構的,在這種情況下,您需要使用“certutil”來創建 cert db(或者更好,將其指向系統 NSS 證書儲存,如果有的話) .

在它工作的系統上,ldapsearch 必須有一個工作證書儲存,可能是因為這些 OpenLDAP 包是針對 OpenSSL 建構的(或者那裡可能有一個工作 NSS 樣式的儲存可用)。

引用自:https://serverfault.com/questions/579131