A pergunta tem três meses, então minha resposta pode não ser necessária pelo OP, mas pode ajudar qualquer pessoa que queira essa configuração.
A questão é marcada como apache-2.4, mas a configuração é semelhante à 2.2. Isso não é totalmente surpreendente, pois muitos exemplos na documentação do Apache 2.4 parecem não ser apropriados para o 2.4.
Eu tinha essa configuração trabalhando em 2.2 (exceto pelo "Allow from" que não funcionava) e tive que reescrevê-lo para 2.4. Eu descobri que precisava de alguns elementos que não estavam imediatamente aparentes na documentação.
Eu não ofereço garantia para isso; é baseado no meu arquivo de configuração sem teste. +StrictRequire
pode não ser necessário em SSLOptions
- Eu não tentei sem isso, mas funciona dessa maneira.
Para essa questão, a linha SSLOptions
pode não ser necessária - a opção +FakeBasicAuth
provavelmente não está sendo usada. Na configuração que tenho aqui, assim que Company_O
for encontrado no certificado, o acesso será concedido. Pelo que entendi, +FakeBasicAuth
é usado com Require valid-user
(sozinho) e o acesso é concedido se o DN do certificado for encontrado na lista de usuários definida em AuthUserFile
, junto com uma senha apropriada. Meu sistema não funciona dessa maneira e suspeito que o OP também não queria fazer isso.
<Directory /opt/app/system/html>
RedirectMatch permanent ^/$ /exec/login.pl
Options -Indexes +FollowSymLinks
# Anything which matches a Require rule will let us in
# Make server ask for client certificate, but not insist on it
SSLVerifyClient optional
SSLVerifyDepth 2
SSLOptions +FakeBasicAuth +StrictRequire
# Client with appropriate client certificate is OK
<RequireAll>
Require ssl-verify-client
Require expr %{SSL_CLIENT_I_DN_O} eq "Company_O"
</RequireAll>
# Set up basic (username/password) authentication
AuthType Basic
AuthName "Zugriffsschutz"
AuthBasicProvider file
AuthUserFile /etc/apache2/htaccess/iapp.passwd
# User which is acceptable to basic authentication is OK
Require valid-user
# Access from these addresses is OK
Require ip 10.20.0.0/255.255.0.0
Require ip 10.144.100
</Directory>
Eu tenho
<Directory />
...
Require all denied
...
</Directory>
em um arquivo de configuração diferente - pode ser que essa seja uma parte importante da receita.
O que me levou um tempo para conseguir esse trabalho foi que parecia que o Require expr %{SSL_CLIENT
iria funcionar sozinho, mas eventualmente eu percebi que Require ssl-verify-client
também era necessário (veja link )