 |
Why do I get I/O errors when connecting
via HTTPS to an Apache+mod_ssl server with Microsoft Internet Explorer
(MSIE)?
The first reason is
that the SSL implementation in some MSIE versions has some subtle bugs
related to the HTTP keep-alive facility and the SSL close notify alerts
on socket connection close. Additionally the interaction between SSL and
HTTP/1.1 features are problematic in some MSIE versions. You can work
around these problems by forcing Apache not to use HTTP/1.1, keep-alive
connections or send the SSL close notify messages to MSIE clients. This
can be done by using the following directive in your SSL-aware virtual
host section:
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
Further, some MSIE versions have problems with particular ciphers.
Unfortunately, it is not possible to implement a MSIE-specific
workaround for this, because the ciphers are needed as early as the SSL
handshake phase. So a MSIE-specific SetEnvIf won't solve these problems.
Instead, you will have to make more drastic adjustments to the global
parameters. Before you decide to do this, make sure your clients really
have problems. If not, do not make these changes - they will affect all
your clients, MSIE or otherwise.
The next problem is that 56bit export versions of MSIE 5.x browsers have
a broken SSLv3 implementation, which interacts badly with OpenSSL
versions greater than 0.9.4. You can accept this and require your
clients to upgrade their browsers, you can downgrade to OpenSSL 0.9.4
(not advised), or you can work around this, accepting that your
workaround will affect other browsers too:
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
This allows the broken MSIE versions to work by specifying which ciphers
ssl will use (RC4+RSA etc..) and omitting the newer 56bit TLS ones (ADH,
EXPORT56; note the '!' marks which signify omission).
Another problem with MSIE 5.x clients is that they refuse to connect to
URLs of the form https://12.34.56.78/ (where IP-addresses are used
instead of the hostname), if the server is using the Server Gated
Cryptography (SGC) facility. This can only be avoided by using the fully
qualified domain name (FQDN) of the website in hyperlinks instead,
because MSIE 5.x has an error in the way it handles the SGC negotiation.
And finally there are versions of MSIE which seem to require that an SSL
session can be reused (a totally non standard-conforming behaviour, of
course). Connecting with those MSIE versions only work if a SSL session
cache is used. So, as a work-around, make sure you are using a session
cache (see the SSLSessionCache directive).
|