此处不允许使用 LDAPTrustedClientCert

此处不允许使用 LDAPTrustedClientCert

我正在尝试在运行 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

LDAPTrustedClientCertLDAPTrustedGlobalCert是客户端证书。因此,它们通常不需要用于保护来自 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 虚拟主机中。

相关内容