Is it possible to request generation of client keypair in browser and send the public key to the server CA to be signed transparently? Then installing the signed certificate in user's browser?
Scenario:
- User opens https://examle.com/ web page, server identity is verified
- User requests an account creation
- Keypair is generated in user's browser and not revealed to server/CA
- Pubkey is send to server for signing
- Server signes the key and generates certificate
- Certificate is sent to client and installed in browser along with private key
Next time client connects to server, his identity is verified based on client certificate.
It would be nice if server could force/hint the client to protect his private key using password encryption.
I've seen online banking using java applet for this task. Is it possible to do it using native browser capabilites? Apache/PHP or Node.js solution would be welcome.