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

故事扮演 提交于 2019-12-20 12:07:10

问题


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?

回答1:


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 Operative System 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



来源:https://stackoverflow.com/questions/40847638/how-chrome-browser-know-which-client-certificate-to-prompt-for-a-site

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!