1

I am running some small websites which are served by Apache / Linux. Currently, I am trying to cut down the SSL configuration as far as possible to make it as secure as possible.

I have configured Apache so that it only allows TLS 1.2 and only ciphers with DHE or ECDHE key exchange. Firefox and Chrome in the newest versions (as per the time of this writing) perfectly connect to the websites on this server.

But Internet Explorer 11 (running under Windows 7 x64) in standard configuration is not able to connect to any of these websites. Wireshark captures show that the IE in its first client hello tries TLS 1.2, shows its ciphers to the server and so on, and that the server's answer is correct, including the cipher chosen.

Then, seemingly for no reason, IE restarts and sends a new client hello, this time using TLS 1.0, which of course fails and makes IE think that it can't connect to the website.

Could there be a bug in IE which makes it try the wrong protocol after the right protocol already has been successfully established? A bug which possibly only occurs if the server ONLY provides TLS 1.2 (which is probably quite uncommon)?

nhahtdh
  • 115
  • 7
  • 2
    It might be that your configuration IE remembers connectivity problems with your site and thus downgrades to TLS 1.0. But it is really hard to check without having something to reproduce, i.e. the URL. But you might check your site against [SSLLabs](https://www.ssllabs.com/ssltest/analyze.html) which also shows if you should expect any problems with specific user agents. – Steffen Ullrich Dec 08 '15 at 21:38
  • Steffen, thanks for bothering. I have corrected my problem description because I had a problem with the Wireshark logs, and the problem description was wrong therefore. I can't test the site because I am testing internally currently (private network) before changing any configuration on the public websites ... –  Dec 08 '15 at 21:47
  • Steffen, I have cleared all caches and restarted IE a dozen of times without success ... –  Dec 08 '15 at 21:48
  • Gien your edited description IE has problems with the initial TLS 1.2 handshake and will thus downgrade to TLS 1.0. But it cannot be seen what the problems are unless you provide access to the captured files which include the failed TLS 1.2 handshake (like on cloudshark). – Steffen Ullrich Dec 08 '15 at 21:53

3 Answers3

1

Check whether you are using an MD5 certificate or not, since Internet Explorer 9/10/11 and Edge abort the connection if the server provides a certificate chain which uses MD5 algorithm, as mentioned at the end of this blog:

If the server negotiates a TLS1.2 connection with a Windows 7 or 8 schannel.dll-using client application, and it provides a certificate chain which uses the (weak) MD5 hash algorithm, the client will abort the connection (TCP/IP FIN) upon receipt of the certificate.

Searching with the keyword md5 tls1.2 reveals this blog post TLS 1.2 handshake failure which describes the same problem in more details. Basically, according to RFC5246 The Transport Layer Security (TLS) Protocol Version 1.2, MD5 is no longer considered a secured hash function, so schannel.dll follows the RFC and reject MD5 certificate chain.

While I understand the rationale, it would have been easier to troubleshoot if the error message had been more specific. Therefore, I have filed an issue to the bug tracker.

Swapping in a SHA-2561 certificate should resolve the problem.

1 SHA-1 would also work, but it is no longer recommended

nhahtdh
  • 115
  • 7
1

We had some Windows 7 boxes that had the same behavior. It ended up that we needed to install MS14-066 to enable some additional ciphers. No idea why a patch from late 2014 wasn't installed already, but there you go.

Your mileage may vary.

0

I have experienced a similar problem using IE 11 and Apache 2.4. with client authentication (port 843) and I have solved my problem modifying IE configuration and finally modifying apache ssl config at "< VirtualHost...>" section.

1st part to solve problem: The client config

Menu "Tools -> Internet options -> Advanced", at "Security" section, uncheck SSL2.0 and SSL 3.0 and then be sure that TLS 1.0, 1.1 and 1.2 are checked, then click "Apply" button.

Over de the same Menu "Tools -> Internet options -> Content", click "Clear SSL state" buttom.

Close Internet explorer, re-open it and try to access the web site.

Maybe in your case, you have to check only TLS 1.2 . Try differents combinations o TLS enabled, but don't enable SSL to avoid problems.

Finally I tried SSL3.0 + TLS1.0 + TLS1.1 +TLS1.2 and that worked fine.

In any case if you use SSL2.0 + TLS 1.2, access to your site will crash, because they are incompatible.

2nd part to solve problem: The server config

Look at your website virtualhost section at apache "config/" Be sure that in any section like "< VirtualHost *:[port] >" you have the name of your domain at "ServerName" parameter and [PORT] (Specially this last action, definitively solved my problem)

For example.

  • ServerName www.your-domain.com:80

  • ServerName www.your-domain.com:443

  • ServerName www.your-domain.com:843

Dont forget to look at in the http-ssl.conf file at "conf/extra/" directory (this path and file name depend of your Apache server instalation), where maybe you can found an entry for "ServerName" parameter at default virtual host section.

I hope that help you.

jagumon
  • 1
  • 2