Estamos tendo um problema bastante estranho com uma instalação do Apache. Aqui está um breve resumo:
Atualmente estou configurando o Apache com https e certificados de servidor. Isso é bastante fácil e funciona diretamente da caixa - como esperado. Esta é a configuração para esta configuração:
Listen 443
SSLEngine on
SSLCertificateFile "/progs/apache/ssl/example-site.no.pem"
SSLCertificateKeyFile "/progs/apache/ssl/example-site.no.key"
SSLCACertificateFile "/progs/apache/ssl/ca/example_root.pem"
SSLCADNRequestFile "/progs/apache/ssl/ca/example_intermediate.pem"
SSLVerifyClient none
SSLVerifyDepth 3
SSLOptions +StdEnvVars +ExportCertData
RequestHeader set ssl-ClientCert-Subject-CN "%{SSL_CLIENT_S_DN}s"
RewriteEngine On
ProxyPreserveHost On
ProxyRequests On
SSLProxyEngine On
...
<LocationMatch /secureStuff/$>
SSLVerifyClient require
Order deny,allow
Allow from All
</LocationMatch>
...
<Proxy balancer://exBalancer>
Header add Set-Cookie "EX_ROUTE=EB.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
BalancerMember http://10.0.0.1:7200 route=ee1 retry=300 flushpackets=off keepalive=on
BalancerMember http://10.0.0.2:7200 route=ee2 retry=300 flushpackets=off keepalive=on status=+H
ProxySet stickysession=EX_ROUTE scolonpathdelim=Off timeout=10 nofailover=off failonstatus=505 maxattempts=1 lbmethod=bybusyness
Order deny,allow
Allow from all
</Proxy>
RewriteCond %{REQUEST_URI} !^/index.html [NC]
RewriteRule ^/(.*)$ balancer://exBalancer/$1 [P,NC]
ProxyPassReverse / balancer://exBalancer/
Header edit Set-Cookie "(.*)" "$1;HttpsOnly"
...
Então - tudo funciona bem e como esperado para todas as páginas que não fazem parte da diretiva LocationMatch.
Ao solicitar algo que corresponda à diretiva LocationMatch, sou solicitado a obter um certificado (por isso, o atributo SSLVerifyClient obrigatório) - e obter todos os certificados corretos no meu navegador com base na cadeia raiz / intermediária. Depois de escolher um certificado e clicar em "OK", isso é o que aparece nos logs do apache:
[ssl: info] [pid 9530: tid 25] [cliente: 43357] AH01998: Conexão fechada para filho 86 com desligamento abortivo (
[Qui Oct 11 09: 27: 36.221876 2012] [ssl: debug] [pid 9530: tid 25] ssl_engine_io.c (1171): (70014) Fim do arquivo encontrado: [cliente 10.235.128.55:45846] AH02007: handshake SSL interrompido pelo sistema [Dica: botão Parar pressionado no navegador?!]
E isso apenas solta os logs. O que esta acontecendo aqui? Eu posso ver essa configuração trabalhando na minha máquina local, mas não em um dos nossos servidores. Não há diferenças de configração entre os servidores, apenas pequenas alterações no aplicativo.
Eu tentei o seguinte:
1) Removendo a verificação de certificado da CA (works)
2) Adicionando certificado CA necessário para todo o site (obras)
3) Adicionando "SSLVerifyClient opcional" não funciona
4) ++
Informações do servidor / aplicativo
Local:
-OpenSSL v.1.0.1x
-Apache 2.4.3
-Ubuntu
-mpm: event
-toda configuração deve ser ativada
Servidor
(com falha):
-OpenSSL 0.9.8e
-Apache 2.4.2
-SunOS
-mpm: trabalhador
-toda configuração deve ser ativada
Por favor, deixe-me saber se mais informações são necessárias, eu vou fornecer instantaneamente.
Breve resumo:
-Executando o apache 2.4
Certificados de servidor funcionam bem
Certificados -Client para alguns / Locais não funciona, falha com erros
PS:
Poderia estar relacionado com a versão do OpenSSL e com o material "Renegociação" relacionado ao TLS / SSLv3?