0

I am trying to understand how the client is authenticated to the server during mutual tls

So during the handshake, the client sends this message

Client — CertificateVerify This message is used by the client to prove the server that it possesses the private key corresponding to its public key certificate. The message holds hashed information (hash of all the messages exchanged so far during the handshake process) which is digitally signed by the client. It is required if the server issued a CertificateRequest to the client, so that client has sent a certificate in response which needs to be verified in server-side.

My confusion is here "server that it possesses the private key corresponding to its public key certificate."

The certificate is issued from a certificate authority. So the ca is using its private key to sign the certificate. How the client has the private key of the certificate?

1

How the client has the private key of the certificate?

The central concept of certificate based authentication that the owner the certificate and only the owner has access to the private key. The proof of ownership of the certificate as then bound to signing something with the private key: everybody knowing the certificate (and the included public key) can validate the signature but only the owner of the private key can create it.

The certificate is issued from a certificate authority.

The certificate authority issues a certificate based on the certificate request from the client. This key pair consisting of private and public key is (ideally) created at the client side and the private key remains at the client. Only the public key is included in the certificate request (which is also signed by the private key).

7
  • so following the second part of the answer, this means that the server can verify the client owns the certificate? how does this happen? it uses the public key of the certificate to validate the digital signature of the certificate? – loutsi1 Dec 22 '20 at 10:37
  • @loutsi1: that's the main point of a client certificate, isn't it? – Steffen Ullrich Dec 22 '20 at 10:38
  • Lets me ask you one more question, please. The client certificate is not signed with the CA private key? how can the server validate this signature? Must have the CA public key. Am I totally confused? – loutsi1 Dec 22 '20 at 10:41
  • "The client certificate is not signed with the CA private key" - it is signed with the CA private key, that's the point of a certificate trust chain. The private key of the CA is only known to the CA, the private key of the client certificate is only known to the client. – Steffen Ullrich Dec 22 '20 at 10:55
  • so the client΄s certificate is signed with the ca private key. During the handshake, the client sends the certificate which includes his public key to the server. Now the server how can validate the signature of the certificate? Is the public key of the client enough or must have the Ca public key? – loutsi1 Dec 22 '20 at 11:33

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.