One is issued an identification card which is really a smart card ("common access card"[0]) with certificates on it and that is used for authentication.
PKI works but "it's too {hard|much trouble}" is a frequent excuse.
malware can steals passwords saved, which are optionally saved encrypted. the cert at least in the one browser i checked is always encrypted.
and even then, if you have malware in your box, any and all security measures are worthless at this point.
decent Renegotiation and mobile client support will come if people using that on the desktop request the feature. it's like that for everything for a while now.
Managing the devices and revokation is also trivial. most sites does that very easily with API keys and cookies (e.g. google 2step auth, you can control which cookies are still valids for the 'remember this device' feature). the same logic could be used for client certs.
Also agree that malware is moot (it can steal auth tokens live as they're submitted, so even physical tokens requiring 2-factor pins get compromised).
The problem is browsers haven't been proactive in making the technology user friendly, so websites don't adopt it, so browsers don't make the technology user friendly. A couple large icons and good design decisions would make it as easy as logging into your screen saver.
It's rather troubling to find that many SSH management tools (including Puppet/Chef recipes) deal poorly with multiple keys per user.
Users. Do. Not. Understand. Certificates.
If the word "certificate" or "public key" or "private key" appears anywhere in the process, it's a non-starter. If they have to select a certificate from a list, look at a "fingerprint", or deal with any other jargon like "x509" or "certificate authority" or anything along those lines, it's dead in the water.
So it's only hassle and no advantage, hence, useless
So I'd say there are some advantages over passwords. And most of the functionality is already there, the only thing missing is a browser function to generate a keypair for a domain and send the public key, without much user interaction.
Also, the client cert, as with private keys, allows you to memorize ONLY ONE password (make it a passphrase, please) instead of a bazillion (or, gasp, reusing).
So, no, it's not an extra hassle. it's a solution for the real hassle of passwords in websites. if it was used.
What I'd like is the same thing but be the owner of the private keys, stored on my external, physical token.
This works with SSL client certs, yes, but its a pita, and there is no trust from the client by the server if its never been seen before.
GnuPG actually works like that properly (with the MonkeySphere project for the web stuff), but its not used anywhere..
OSX will still prompt for the certificate even if there is only one matching, but again it isn't too bad.
Though in iOS 7 / Mavericks I'll probably switch to using Keberos, which will be seamlessly integrated into the Objective-C's networking APIs.
The other thing is that renegotiation is somewhat broken since that related security flaw in 2010ish, so you can't have parts of a site accessible without client certs and other parts requiring a cert.
This has been fixed since, but I don't know how well it's supported by clients.
Finally, compared to 2008, we're using many more devices for accessing various web applications now. Having the client cert bound to one browser on one machine is annoying and synchronizing it truly securely is probably impossible.
I do stand by the horrendous UI though. Even if the other issues weren't there, the UI certainly kills client certificates for normal users.
Then again, crypto UI is hard and I'm afraid the incentive for redesigning this is pretty much zero because nobody is using it to begin with and because it's flawed anyways.