Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How Chrome browser know which client certificate to prompt for a site?

I'm setting up certificate authentication for my project using Tomcat. It works ok for command line client such as cURL.

I have many client certificates installed in Chrome browser. Some are using to connect to my site, others are used for different purposes and not relate to my project.

Every time I connect to my site, Chrome presents a list of client certificates for choosing. These are exactly the certificates that I installed and not others. My questions are:

  1. How Chrome knows which client certificates are for a site to present for choosing?
  2. Tomcat stores those client certificates in its trust store. During SSL hanshake, Tomcat will request for client certificate. Does it request for some specific certificates that it knows in its trusted store so that Chrome knows what to show?
like image 359
System Avatar asked Nov 28 '16 15:11

System


People also ask

How do I select a client certificate in Chrome?

In Chrome, go to Settings. On the Settings page, below Default browser, click Show advanced settings. Under HTTPS/SSL, click Manage certificates. In the Keychain Access window, under Keychains, click login, under Category, click Certificates, and then, select your Client Certificate.

How does client certificate authentication work?

A server certificate is sent from the server to the client at the start of a session and is used by the client to authenticate the server. A client certificate, on the other hand, is sent from the client to the server at the start of a session and is used by the server to authenticate the client.


1 Answers

The client certificate authentication is ruled in the handshake phase of the SSL/TLS protocol implemented by browsers.

  1. If the server requires a client certificate authentication (it is optional), send a message to client with the list of the accepted certificate authorities (CA). Can be void if server accepts any certificate.

  2. The client select the certificates installed in client keystore which have been issued by any of these CA's, and present the list to user. In case of Chrome, the browser selects the certificates installed by user from the operating system's Key Store.

  3. User choose a certificate, and the client performs a signature with the private key of the certificate over a known data interchanged during handshake.

Only certificates with private key can be selected during step 2. This is the reason by with the browser does not select the certificates of trusted CA's installed in your device. You do not own the private key

like image 199
pedrofb Avatar answered Sep 21 '22 08:09

pedrofb