Outlook Web Access, proxy reverso e navegador

1

Recentemente, movemos um servidor Exchange por trás de um proxy reverso devido à perda de um IP público. Eu consegui configurar o proxy reverso ( httpd proxy_http ).

Mas há um problema para a configuração SSL.

Ao acessar a interface do OWA com o Firefox, tudo está ok e funcionando. Ao acessar com MSIE ou Chrome, eles não recuperam o bom Certificado SSL.

Acho que isso se deve ao múltiplo host virtual do httpd. Existe uma solução alternativa para garantir que o MSIE / Chrome solicite o certificado para o bom nome de domínio como o FF faz?

Já foi testado com o host virtual SSL:

SetEnvIf User-Agent ".*MSIE.*" value BrowserMSIE
  Header unset WWW-Authenticate
  Header add WWW-Authenticate "Basic realm=exchange.domain.com"

A:

ProxyPreserveHost On

também:

BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

Ou:

SetEnvIf User-Agent ".*MSIE.*"    \
nokeepalive ssl-unclean-shutdown  \
downgrade-1.0 force-response-1.0

E muito ProxyPass e ProxyReversePath on /exchweb /exchange /public etc ...

E ainda não parece funcionar. Alguma pista?

Obrigado.

Editar 1: precisão das versões

# openssl version
OpenSSL 0.9.8k-fips 25 Mar 2009

/usr/sbin/httpd -v
Server version: Apache/2.2.11 (Unix)
Server built:   Mar 17 2009 09:15:10

Versões do navegador:

MSIE : 8.0.6001
Opera: Version 11.01 Revision 1190
Firefox: 3.6.15
Chrome: 10.0.648.151

Sistema operacional:

Windows Vista 32bits.

Eles são todos compatíveis com o SNI. Testei essa tarde link

Você está certo Shane Madden, eu tenho vários sites no mesmo IP público (e mesmo porto também). O servidor em si é apenas um proxy reverso, que reescreve endereços para servidores internos.

O host padrão é um site dev, configurado com o certificado que não corresponde ao OWA (é claro ... teria sido fácil)

<VirtualHost *:443>
    ServerName dev2.domain.com
    ServerAdmin [email protected]


    CustomLog "| /usr/sbin/rotatelogs /var/log/httpd/access-%y%m%d.log 86400" combined
    ErrorLog "| /usr/sbin/rotatelogs /var/log/httpd/error-%y%m%d.log 86400"

    LogLevel warn

    RewriteEngine on
    SetEnvIfNoCase X-Forwarded-For .+ proxy=yes

    SSLEngine on
    SSLProtocol -all +SSLv3 +TLSv1
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL:+SSLv3
    SSLCertificateFile /etc/httpd/ssl/domain.com.crt
    SSLCertificateKeyFile /etc/httpd/ssl/domain.com.key


    RewriteCond %{HTTP_HOST} dev2\.domain\.com
    RewriteRule ^/(.*)$ http://dev2.domain.com/$1 [L,P]

</VirtualHost>

O certificado de domínio é um * .domain.com

O segundo vHost é:

<VirtualHost *:443>
    ServerName exchange.domain2.com
    ServerAdmin [email protected]


    CustomLog "| /usr/sbin/rotatelogs /var/log/httpd/exchange/access-%y%m%d.log 86400" combined
    ErrorLog "| /usr/sbin/rotatelogs /var/log/httpd/exchange/error-%y%m%d.log 86400"

    LogLevel warn

    SSLEngine on
    SSLProxyEngine On

    SSLProtocol -all +SSLv3 +TLSv1
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL:+SSLv3
    SSLCertificateFile /etc/httpd/ssl/exchange.pem
    SSLCertificateKeyFile /etc/httpd/ssl/exchange.key
   RewriteEngine on
    SetEnvIfNoCase X-Forwarded-For .+ proxy=yes

    RewriteCond %{HTTP_HOST} exchange\.domain2\.com
    RewriteRule ^/(.*)$ https://exchange.domain2.com/$1 [L,P]

</VirtualHost>

e seu certificado é somente exchange.domain2.com.

Eu presumo que o SNI está em algum lugar não ativado no meu servidor. As versões do openssl e do apache parecem boas para o suporte a SNI. A única coisa que eu não sei é se o httpd foi compilado com as boas opções. (Eu suponho que é um pacote fedora).

    
por M'vy 18.03.2011 / 12:58

1 resposta

1

Alguns números de versão do navegador seriam bons, bem como mais algumas informações sobre o que mais está nesse servidor.

Com base no que você forneceu, parece que há outros certificados SSL nesse servidor, e os navegadores que não são do firefox estão obtendo um dos outros? A partir daqui, vou arriscar um palpite de que o certificado que eles estão recebendo é do virtualhost padrão? Também vou arriscar um palpite de que você está testando em um sistema Windows XP.

Onde estou indo com isto é que você tem vários certificados SSL todos ligados à mesma porta, e um diferente deve ser apresentado com base no nome do host que está sendo visitado. Isso depende de Server Name Indication , que não é suportado por navegadores mais antigos ou por bibliotecas de criptografia do XP.

Infelizmente, as soluções alternativas para isso (o que você precisará, ainda há muitos navegadores antigos por aí) não são triviais; compre um novo certificado que abrangerá tudo nessa porta (um curinga ou certificado Subject Subject Name) ou adicione um IP extra ao servidor para que o outro VirtualHost ouça com apenas seu próprio certificado.

    
por 18.03.2011 / 15:45