如果没有 tls_checkpeer,pam_ldap 配置中的 CA 根证书将无法工作

如果没有 tls_checkpeer,pam_ldap 配置中的 CA 根证书将无法工作

系统是 Debian Squeeze 和 Ubuntu Precise,配置相同。两个发行版上的 libpam-ldap 版本均为 184-8.5。

使用以下配置,一切工作正常/etc/pam_ldap.conf

host 10.220.100.11
base ou=companies,ou=asp,ou=sweden,dc=domain,dc=inet
ldap_version 3
ssl on
tls_checkpeer no
binddn svc_unix_auth
bindpw secret
scope sub
timelimit 30
pam_filter objectclass=User
nss_map_attribute uid sAMAccountName
pam_login_attribute sAMAccountName
pam_password crypt
pam_groupdn CN=Linux_Authentication,OU=Groups,OU=ourcompany,OU=Companies,OU=ASP,OU=sweden,DC=domain,DC=inet

对 pam 配置只有一个更改,在/etc/pam.d/common-auth

auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    [success=1 default=ignore]      pam_ldap.so use_first_pass

第二行是为了启用 ldap 登录而添加的内容。

一旦我们tls_checkpeer no从文件中删除/etc/pam_ldap.conf它,它就会失败,因为 LDAP 服务器具有自签名证书。

尝试从 LDAP 服务器导出 base64 格式的根 CA 证书,并将其放入具有 0644 权限的 /etc/ssl/certs 中。然后添加tls_cacertfile /etc/ssl/certs/ldap_server.crt进去pam_ldap.conf,但这没有帮助。

如何使用根 CA 并避免禁用自签名证书检查?

答案1

据我所知,pam_ldap 使用openssl其 TLS 功能,或使用 pam_ldap 本身内置的类似功能。openssl需要 ca 文件的名称为主题的哈希值,后跟“.0”,或者如果已经有另一个具有该哈希的 ca 证书,则将 0 增加到 1 或 2,或下一个未使用的数字。通常建议您将实际的 CA 证书文件名保留为一个友好名称,以便您知道它是什么,并创建一个指向它的符号链接,该链接的名称使用主题的哈希值,后跟“.0”或下一个可用数字。要查找哈希:

openssl x509 -hash -in /etc/ssl/certs/ldap_server.crt

这将返回一个十六进制数,例如 ea12345。

要创建 openssl 和 pam_ldap 所需的符号链接:

ln -s /etc/ssl/certs/ldap_server.crt /etc/ssl/certs/ea12345.0

然后删除“tls_cacertfile /etc/ssl/certs/ldap_server.crt”行,并在其位置添加一行“tls_cacertdir /etc/ssl/certs/”。当 LDAP 服务器提供其服务器证书时,它将对 CA 的主题名称进行哈希处理,并尝试通过 ea12345.0 作为名称来查找 CA 证书文件,这将找到符号链接并能够打开文件。

相关内容