我正在尝试使用 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>