Назад | Перейти на главную страницу

Outlook Web Access, обратный прокси-сервер и браузер

Недавно мы переместили сервер обмена за обратным прокси-сервером из-за потери общедоступного IP-адреса. Мне удалось настроить обратный прокси (httpd proxy_http).

Но есть проблема с настройкой SSL.

При доступе к интерфейсу OWA с помощью Firefox все в порядке и работает. При доступе с помощью MSIE или Chrome они не получают хороший сертификат SSL.

Я думаю, это связано с множеством виртуальных хостов для httpd. Есть ли обходной путь, чтобы MSIE / Chrome запрашивал сертификат для хорошего доменного имени, например FF?

Уже протестировано с виртуальным хостом SSL:

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

А:

ProxyPreserveHost On

также:

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

Или:

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

И много ProxyPassи ProxyReversePath на /exchweb /exchange /public и т.д...

И это все еще не работает. Есть подсказка?

Спасибо.

Изменить 1: точность версий

# 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

Версии браузера:

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

Операционная система:

Windows Vista 32bits.

Все они соответствуют стандарту SNI, я протестировал их сегодня днем https://sni.velox.ch/

Вы правы, Шейн Мэдден, у меня несколько сайтов на одном публичном IP (и на одном порте). Сам сервер - это просто обратный прокси, который переписывает адреса на внутренние серверы.

Хост по умолчанию - это сайт разработчика, настройте его с помощью сертификата, который не соответствует OWA (конечно ... было бы просто)

<VirtualHost *:443>
    ServerName dev2.domain.com
    ServerAdmin tech_support@domain.com


    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>

Сертификат домена - * .domain.com

Второй vHost:

<VirtualHost *:443>
    ServerName exchange.domain2.com
    ServerAdmin tech_support@domain.com


    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>

и это сертификат только exchange.domain2.com.

Я предполагаю, что SNI где-то не активирован на моем сервере. Версии швов openssl и apache подходят для поддержки SNI. Единственное, чего я не знаю, так это то, что httpd был скомпилирован с хорошими параметрами. (Я предполагаю, что это пакет Fedora).

Некоторые номера версий браузера были бы хороши, а также некоторая дополнительная информация о том, что еще находится на этом сервере.

Исходя из того, что вы предоставили, похоже, что на этом сервере есть другие сертификаты SSL, а браузеры, отличные от firefox, получают один из других? Отсюда я рискну предположить, что сертификат они получают от виртуального хоста по умолчанию? Я также рискну предположить, что вы тестируете систему с Windows XP.

Я собираюсь сказать, что у вас есть несколько сертификатов SSL, привязанных к одному и тому же порту, и должен быть представлен другой в зависимости от того, какое имя хоста посещается. Это зависит от Индикация имени сервера, который не поддерживается старыми браузерами или библиотеками шифрования XP.

К сожалению, обходные пути для этого (которые вам понадобятся, поскольку существует слишком много старых браузеров) нетривиальны; купите новый сертификат, который будет охватывать все на этом порту (подстановочный знак или сертификат альтернативного имени субъекта), или добавьте дополнительный IP-адрес на сервер, чтобы другой VirtualHost мог прослушивать его только с помощью собственного сертификата.