由于公共IP丢失,我们最近将一个交换服务器移到了一个反向代理之后。 我已经设法configuration反向代理( httpd proxy_http )。
但是SSLconfiguration存在问题。
当使用Firefox访问OWA界面时,一切正常并且正常工作。 在使用MSIE或Chrome进行访问时,他们不会检索到良好的SSL证书。
我认为这是由于httpd的倍数虚拟主机。 有没有一个解决方法,以确保MSIE / Chrome请求像FF那样的良好域名的证书?
已经使用SSL虚拟主机进行了testing:
SetEnvIf User-Agent ".*MSIE.*" value BrowserMSIE Header unset WWW-Authenticate Header add WWW-Authenticate "Basic realm=exchange.domain.com"
A:
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 on /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兼容的,今天下午我testing了他们https://sni.velox.ch/
你是对的Shane Madden,我在同一个公共IP(和同一个端口)有多个站点。 服务器本身只是一个反向代理,重写地址到内部服务器。
默认的主机是一个开发网站,configuration与不符合OWA的证书(当然…本来很容易)
<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>
域的证书是* .domain.com
第二个主要是:
<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>
它的证书只是exchange.domain2.com。
我认为SNI是在我的服务器上没有激活的地方。 对于SNI支持,openssl和apache接口的版本是可以的。 我唯一不知道的是如果httpd已经编译好的选项。 (我认为这是一个Fedora数据包)。
某些浏览器版本号会很好,还有一些关于该服务器还有什么的更多信息。
根据你提供的信息,听起来这个服务器上还有其他的SSL证书,而非Firefox浏览器正在获得其他证书? 从这里我会冒险猜测他们得到的证书是从默认的虚拟主机? 我也会冒险猜测你是从Windows XP系统进行testing的。
我要去的地方是你有多个SSL证书绑定到同一个端口,并且应该根据正在访问的主机名显示不同的证书。 这取决于服务器名称指示 ,旧版浏览器或XP的encryption库不支持。
不幸的是,这种方法(你将需要,仍然有太多旧的浏览器)是不平凡的; 购买一个覆盖该端口上的所有内容的新证书(通配符或主题替代名称证书),或者添加一个额外的IP到服务器,以便其他VirtualHost只使用自己的证书进行监听。