Why aren't client-side certificates used for Authentication? Then user has to remember only 1 password to unlock his windows account which stores the certificates. I understand that if user access websites from different machines, the certificates has to be synced. But with one strong password for windows account, isn't it convinient and more secure for users to authenticate using client-side certificates?

Am I assuming something wrong here?

  • 2
    Probably because they are quite scary to use for non tech-savvy users - the cert management UI is usually hidden deep in the browser's preferences. It would be nice to have browser vendors work on that and provide an easy to use UI to generate/manage those certs. – user42178 Nov 11 '14 at 6:10

The most pressing reason is that people login from multiple computers: home PC, laptop, tablet, work PC, friend's PC, internet cafe, etc. While it is theoretically possible to have a system that syncs your certificates - either through a cloud service, or a physical device you carry - this is beyond the capability of most users.

Now, could someone create an authentication service that does this for you? That takes care of all the certificates under the hood? Well, that is exactly what Mozilla Persona does.

The second reason is that there are millions of websites that already use passwords. To change all these to use some other authentication scheme (whether it's OAuth, SRP, certificates, or something else) would be an enormous undertaking - and why would a website bother? What's the incentive for them?

Because of this, password managers are a far more practical technology to solve the authentication problem. Ok, they are not quite as secure as client certificates, but the differences are fairly minor. Systems like LastPass give you a single-sign-on interface, and work with (almost) any website.


I see two major reasons:

  1. a certificate-based authentication is complex to explain. Today almost everyone understands how to use a password based authentication; Even if all the security rules (long enough, composed of a mix of digits, letters and special characters, most be changed from time to time, must not be shared...) are not always applied, almost everyone is aware of these. Changing to a certificate based authentication requires to re-educate the users to give us to explain how it works and to use it (what is a certificate, what is a private key, where is it stored, why is it not working from my mobile phone...). Moreover users do not like changing their habits.

  2. The certificate management is complex and expensive. Using passwords, even if in a secure way, requires only a couple of lines of code in your application and some additional columns in your database. If you want to distribute certificates to the users of your application you have to setup a Public Key Infrastructure. By experience I know that creating a PKI is complex from a technical and also an organizational point of view: you have to deal with user registration, certificate distribution, certificate revocation, publication of the certificate revocation lists, certificate policies...

An example: some years ago the French tax service web application decided to replace the certificate authentication system (the certificate was also used for digital signature) by a simple password authentication. The reasons: the complexity of explaining how to use to the users (for instance the certificate had a 3 years validity period but most of the users was requesting a new one every year) and the costs of the infrastructure required to management this thousands of certificates.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.