我正在尝试在运行 Apache 2.2 的 CentOS 6.x 服务器上配置 ldaps 身份验证。我已经成功使用 ldap 身份验证几年了,但需要让它通过 SSL 工作。我确实加载了 ldap_module 和 authnz_ldap_module。我的问题是,无论我在堆栈中的哪个位置尝试包含任何指令(如 LDAPTrustedClientCert 或 LDAPTrustedGlobalCert),我都会收到“此处不允许指令”消息。我尝试过在根配置中,尝试过在 vhost 配置中的块中,尝试过允许所有覆盖并将其放在 .htaccess 文件中……但都无济于事。
我欢迎任何建议。
答案1
如果由于某种原因您需要在建立 ldap 连接时提供客户端证书,那么您应该在与指令相同的位置提供这些指令AuthType
。
<Location /secure-ldap-basic>
AuthType basic
AuthName "LDAP signin required"
AuthBasicProvider ldap
AuthLDAPUrl ldaps://ldap.example.com/ SSL
LDAPTrustedClientCert KEY_BASE64 /etc/pki/tls/private/www.example.com.key
LDAPTrustedClientCert CERT_BASE64 /etc/pki/tls/certs/www.example.com.cert
Require valid-user
</Location>
<Location /secure-ldap-form>
AuthType form
AuthName realm
AuthFormProvider ldap
AuthLDAPUrl ldap://ldap.example.com/ STARTTLS
LDAPTrustedClientCert KEY_BASE64 /etc/pki/tls/private/www.example.com.key
LDAPTrustedClientCert CERT_BASE64 /etc/pki/tls/certs/www.example.com.cert
Require valid-user
AuthFormLoginRequiredLocation /login?%{REQUEST_URI}
Session On
SessionCookieName session path=/
SessionCryptoPassphrase <passphrase>
</Location>
答案2
LDAPTrustedClientCert
和LDAPTrustedGlobalCert
是客户端证书。因此,它们通常不需要用于保护来自 Web 服务器的 LDAP 通信。
此指令的安全性与大多数 https 连接的安全性大致相同:
AuthLDAPUrl ldaps://ldap.example.com/ SSL
答案3
根据 apache 2.2 文档:
https://httpd.apache.org/docs/2.2/mod/mod_ldap.html#ldaptrustedclientcert
它应该进入目录设置内。
<directory /the/directory/of/stuff>
LDAPTrustedClientCert type directory-path/filename/nickname [password]
</directory>
此外,由于您正在处理证书,因此您应该位于 SSL 虚拟主机中。