Message > Firefox fails to establish SSL connection with strange error
We had just bought a new wildcard certificate from godaddy, and installed it on IIS 6 for our HTTPS site, and were testing the certificate with various browsers, when we ran into trouble.

IE could open the page just fine. Firefox would immediately fail with error -12219, SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE. It can be thrown in 5 or so places throughout the SSL handshake process (I grabbed the Firefox 2 source code to find out what the error number meant; Firefox 3 actually tells you, though it doesn't give you any helpful tips about it,) so I'm still not sure exactly where it's coming from. It's probably something related to the pre-master secret (PMS.)

The other symptom we noticed was that lsass.exe on the IIS server was jumping to 100% cpu usage when any of Opera, Safari, Lynx, or wget attempted to hit the site, and there would be a good 10 or 15 second delay before the first page was rendered, but it would work -- no strange SSL errors.

Now for the fix: we're still not sure why Internet Explorer didn't display symptoms (not even the lsass.exe cpu spike!), and we're still not sure why exactly Firefox isn't happy with it, but our PHB had requested a 16384 bit signing key as part of the CSR (certificate signing request), thanks to IIS's CSR wizard offering it in the drop-down list. Big numbers are obviously good, you see. This resulted in lsass.exe taking forever to negotiate the handshake protocol with clients (at least the problem was limited to the initial SSL connection, with is kept alive, not every page load!); as to Firefox, it apparently just doesn't like that size key. We got the certificate re-issued with a lower key length, and the new certificate was fine. Also, the wildcard aspect had nothing to do with it, though we had initially suspected it might.

We haven't been able to find any bug reports for Firefox on this issue, but also haven't officially reported it. We haven't tried installing the huge key on Apache either; it was something we meant to try, but we had fixed the problem by then. Hopefully there are enough keywords in this entry for you to find it; we couldn't find any examples of this happening to anyone else. Then again, maybe nobody else has a PHB willing to "turn it up to eleven". Don't use a 16384-bit signing key. Use 1024. No matter what, nobody's breaking your SSL encryption within the lifetime of this universe, nor that of the next. You'll be fine.