如何配置 Apache 使其使用 LDAP 中的证书检查客户端证书?

如何配置 Apache 使其使用 LDAP 中的证书检查客户端证书?

我正在尝试使用 LDAP 作为我的用户目录,使用客户端证书配置我的 Apache 服务器以进行 HTTPS 身份验证。

我想要做的是,Apache 要求用户使用证书进行身份验证(无需登录名/密码),然后 Apache 必须在 LDAP 中检查它:如果用户提供的证书有效,那么 Apache 将返回“它有效”,否则它将返回 401 需要授权。

到目前为止,我所做的是:保护用户与 Apache 之间以及 Apache 与 LDAP 之间的连接。用户在尝试验证自己的身份时也会向 Apache 提供证书。我的问题是,用户向 Apache 提供了证书,但 Apache 不检查用户提供的证书是否与 LDAP 目录中与用户关联的证书匹配。

这是我的配置文件:

 < VirtualHost *:443>

    SSLEngine on
    SSLCertificateKeyFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/certs/apache.pem"
    SSLCertificateFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/certs/apache.crt"
    SSLCACertificateFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/certs/root.crt"
    SSLCACertificatePath "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/certs/"
    SSLProtocol all -SSLv3 -SSLv2

    <Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs">
        AuthType Basic
        AuthName "Authorized Personnel Only"
        AuthLDAPBindDN "cn=ldapadm,dc=ldap,dc=domain"
        AuthLDAPBindPassword "password"
        AuthBasicProvider ldap
        AuthLDAPURL "ldap://ldap.com/ou=People,dc=ldap,dc=domain?cn" STARTTLS
        AuthzLDAPAuthoritative off
        Require valid-user

        SSLUserName SSL_CLIENT_CERT_S_DN_CN
        SSLRequire %{SSL_CLIENT_CERT_S_DN_CN} eq %{REMOTE_USER}
        SSLVerifyDepth 10
        SSLVerifyClient require
    </Directory>
< /VirtualHost>

相关内容