Estou tentando configurar meu servidor Apache para uma autenticação HTTPS com certificados de cliente usando LDAP como meu diretório de usuários.
O que eu quero fazer é que o Apache peça aos usuários para se autenticarem com um certificado (sem um login / senha) e, em seguida, o Apache precisa verificar no LDAP: se o certificado fornecido pelo usuário for válido, o Apache retorno "funciona" caso contrário, ele retornará uma autorização 401 necessária.
O que eu fiz até agora é: proteger a conexão entre os usuários e o Apache e entre o Apache e o LDAP. O usuário também fornece seu certificado para o Apache quando ele tenta se autenticar. Meu problema é que o usuário fornece um certificado para o Apache, mas o Apache não verifica se o certificado fornecido pelo usuário corresponde àquele associado ao usuário no diretório LDAP.
Aqui está o meu arquivo de configuração:
< 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>
Tags ldap apache-2.2 certificate