10

If I understood correctly, when using TLS with client authentication, the client certificate is transmitted to the server in plain text. The client certificate might include personal information, (like CN=name, or X509v3 Subject Alternative Name: email:name@server.com), which could be used to identify users connecting to sites secured with https.

Is there a way to securely transmit the client certificate to the server when using TLS client authentication, without exposing personal information?

8

It is possible:

  • Server and client negotiate SSL without client certificate requirement
  • Encrypted communications begin
  • Server sends Hello Request to ask for a renegotiation, this one encrypted
  • Client willing, another handshake ensues
  • Server sends a Certificate Request to trigger client certificate authentication
  • (Encrypted) handshake continues normally, and client certificate is protected by TLS.

I don't know how easily you can convince existing server implementations to do it, but the protocol allows it. I seem to remember that there are other existing reasons and implementations that trigger a renegotiation immediately after the first (unencrypted) handshake finishes.


Updated to reflect @dave_thompson_085's correction, see also his comment regarding TLS 1.3.

  • 1
    Actually server doesn't sponaneously send ServerHello; it sends HelloRequest and if client agrees the second handshake starts with ClientHello as usual (but with Renegotiation Indication set per RFC 5746); see RFC 5246 7.4.1.1. Although now in 2018 TLS 1.3 (RFC 8446) no longer allows renegotiation at all, but does encrypt authentication on the initial handshake. – dave_thompson_085 Dec 12 '18 at 4:04
  • @dave_thompson_085 good call, thank you for catching me on that. I've updated to include the correction, but I suggest you add a separate answer expanding upon the TLS 1.3 changes, as 1) comments aren't trusted to stay forever and 2) I think that would be an excellent alternate answer. – gowenfawr Dec 12 '18 at 5:00

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.