It's not as good as one signed by an ostensibly trusted CA, but it's strictly better than plain HTTP (no sniffing, harder MITM, etc) - so why not present it to the user the same way that plain HTTP is?
The conspiracy theorist in me wonders if trusted CAs 'lobby' browser vendors to make it so?
Basically, self-signed certificates can't be revoked in case of a security breach.
There's an excellent resume of the discussion of the subject at Mozilla : http://www.gerv.net/security/self-signed-certs/
Can you think of any counter examples? (Note: I'm a security noob - so I'm asking out of sincere curiosity).
Still there is good reason that browsers rub it in the users face when a site tries to use a self-signed certificate. The user has to be really really sure that this is expected (it is like the SSH "the remote host key has changed" warnings).
Still there is good reason that browsers rub it in the users face when a site tries to use a self-signed certificate
but I don't see where you say what that good reason is.
If a self-signed cert is more secure than plain HTTP, why make a self-signed cert more painful to use than plain HTTP?
The people that really know what they're doing can click through the warnings and still do what they want. But casual users that assume https=safe have the chance to leave.
I'm all for deprecating HTTP the same way they did with TELNET, and warning the user for every HTTP site they go to, but that's a wholly different discussion :)
This is the right workflow you should follow with self-signed certificates, it is similar to SSH. You need to accept the certificate once. After manually verifying it is the right one, you're even more secure than trusting on a CA...
Your statements about what should happen are only true if you are requiring encryption for everything that you do. On the web, it's assumed (although most people don't actually know this) that your information is not secure unless you see the green bar or whatever the security visual is on your particular browser.
This brings me back to smanek's point. We have three levels of security: no SSL, untrusted cert, trusted cert. Nothing about the first level is superior to the second level, except for the possibility of a false sense of security. Therefore, a browser should not freak out more in the second situation.
Or more accurately, for all intents and purposes they are exactly as secure, but carry an unearned sense of security. Unjustified senses of security are a very very dangerous thing.
The important thing here is that a browser can do something like this without interrupting something that the user actually cares about with an annoying message. Annoying messages are bad.
In summary, firefox exaggerated with their warning, I'm wondering if it is possible to do an addon to fix this.
The browser should jump up and down when encountering such a certificate as it's exactly how an attempted MITM attack would look.
I don't know if browsers do this, but in principle they could even notify the user on certificate change, so the MITM would have to be on the first connection to a site.
The attack is more involved than just openly sniffing packets. You need to poison the DNS cache on the victim's machine, so that facebook.com resolves to you. Or, you need to poison the ARP cache, so the victim machine thinks that you are the router. These are both easy to do, though, and once you've done that, then you are a man that's in the middle, and MITM attacks are easy under those circumstances.
"ettercap" is a program to automate this technique to spy on SSH, HTTPS, etc. Works quite well.