Client Authentication Básico no Apache
Client Authentication é o processo pelo qual usuários acessam um servidor ou um computador remoto por meio da troca de um certificado digital. Nesse artigo, veremos como configurar o Apache para solicitar as credenciais do usuário no momento em que ele acessar a URL do servidor:
Primeiro, é necessário gerar um certificado digital se você ainda não o possui. Crie um arquivo chamado httpd.passwd que armazenará o usuário/senha admin/admin e rode o comando abaixo para criar usuário e senha:
C:\xampp\apache\bin\htpasswd.exe -b c:\temp\www\httpd.passwd "admin" "admin"
O conteúdo do arquivo será esse:
admin:$apr1$VOWUtTEi$TDtLHgk7CwI8rkqwNMX/T.
Adicione o virtual host abaixo. Esse virtual host escuta a porta 443 e correlaciona o certificado digital utilizado para criptografar o tráfego e aquele usuário e senha definidos:
<VirtualHost financeiro.atitudereflexiva.com.br:443> DocumentRoot "C:/temp/www" ServerName financeiro.atitudereflexiva.com.br ServerAlias financeiro.atitudereflexiva.com.br Options FollowSymLinks Indexes MultiViews Includes <Directory "C:/temp/www"> Require all granted </Directory> SSLEngine on SSLCertificateFile "C:/temp/www/server.crt" SSLCertificateKeyFile "C:/temp/www/server.key" SSLVerifyDepth 5 SSLVerifyClient none <Location "/teste"> SSLOptions +FakeBasicAuth +StrictRequire SSLRequireSSL AuthName "Minha Autenticacao" AuthType Basic AuthBasicProvider file AuthUserFile "C:/temp/www/httpd.passwd" Require valid-user </Location> </VirtualHost>
Reinicie o Apache e faça os testes. Se você quiser solicitar que o próprio usuário informe o certificado digital para depois validar algum elemento presente no certificado digital, como o e-mail, por exemplo, pode fazer algo assim:
SSLProtocol -all +TLSv1.2 <Location "/teste"> SSLVerifyClient require SSLVerifyDepth 3 SSLRequire (%{SSL_CLIENT_S_DN_Email} in {"mail1@teste.com.br","mail2@teste.com.br"} ) SSLRenegBufferSize 31457280 </Location>
Referências
1. JOHNSON, Kim. What is Client Authentication and Why Do I Need It?. GlobalSign. Disponível em: [https://www.globalsign.com/en/blog/client-authentication-introduction/]. Acesso em 24 abr. 2019.
2. WHEELER, David A. Configuring Apache for Client Certificates (such as DoD CAC cards) on Red Hat Linux/CentOS. David A. Wheeler’s Personal Home Page. Disponível em: [https://dwheeler.com/essays/apache-cac-configuration.html]. Acesso em 24 abr. 2019.
2. WHEELER, David A. SSL/TLS Strong Encryption: How-To. Apache HTTP Server. Disponível em: [http://httpd.apache.org/docs/2.2/ssl/ssl_howto.html]. Acesso em 24 abr. 2019.