0

Till now I understood Client Authentication as a way to limit access for certain clients.

But after reading https://en.wikipedia.org/wiki/Transport_Layer_Security#Client-authenticated_TLS_handshake I am not that sure anymore and would like to discuss here to get my eyes opened.

It is all theoretically.

  • The client does have a keypair. In the handshake it sends the certificate (the signed pubkey) and also a signed random data. Because the server uses the sent cert to verify the signed data is knows the client is in possession of the privkey too. And because of the chain-of-trust and the issuer the server also does know that the client is authentic.

  • And there is absolutely no need that the clients cert must be signed with the servers key. It can be any issuer as long the server can verify the clients chain-of-trust. But that depends of the servers CA.

  • To design the limited access we can use the CA. Put only the servers keypair in it and only clients would be able to access that uses certificates that are signed with the servers CA. All others will not pass the verify because the chain-of-trust.

Is my view correct?

Thanks! Chis

  • 1
    "..no need that the clients cert must be signed with the servers key.." - A server certificate can usually not be used to sign the client certificate since the server certificate is not a certificate authority itself. "..Put only the servers keypair in it.." - You don't need a key pair to verify a certificates issuer but only the issuers public key. – Steffen Ullrich Feb 15 '17 at 19:47
  • Yes to both comments. So beside my inaccuracy and shortcuts in the text my basic understanding is correct? – chris01 Feb 15 '17 at 20:08
  • 1
    I guess that you get the basic idea that the server can restrict which client certificates to accept by only trusting the specific CA which should have issued the client certificates. But since the question still describes this idea using some wrong concepts I cannot be really sure. Maybe you should change your question to adjust for the problems I've pointed out. – Steffen Ullrich Feb 15 '17 at 20:16
1

Basically this is right. The Webserver will only accept client certificates signed by the trusted CA.

But take a look at a (well, deprecated) Apache directive SSLRequire. https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslrequire

In addition you can set further conditions on the client certificates like the subject being in a certain OU or the subjects email address following certain rules.

But this is only the necessary requirement to have the TLS connection set up! Then withint this TLS connection you are most probably still running an application. This application can request the information from the clients certificate and allow access based on the certificate's subject.

Which means: You might restrict setting up the TLS connection to a certain department of your company identified by the e.g. OU in the certificate. But still the application may grant different rights or roles based on the CN or emailAddress within the cert's subject.

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.