Я пытаюсь настроить свой сервер Apache для проверки подлинности HTTPS с сертификатами клиентов, используя LDAP в качестве каталога моих пользователей.
Что я хочу сделать, так это то, что 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>