I am looking for a protocol where there needs to be mutual authentication between client and server. For example server should connect to a particular client only. That is client should authenticate to client and client should communicate to server. Also after this all the communication should be encrypted.

Whether SSL/TLS can provide this? Or is there a method where by client could give password to authenticate himself to the server.

My primary requirement is that server should provide information to a particular client only.

  • 1
    Just a note for terminology: It is the client which connects to the server, even if the business relation might be the other way around. Nov 26, 2011 at 0:37

2 Answers 2


There are two ways to achieve mutual authentication within SSL/TLS:

  • Use certificates. The server presents his public key within a certificate, as is customary; the client validates the server certificate with regards to some root CA that the client knows beforehand (this part is what commonly occurs with HTTPS Web sites). Then the server can ask for a client certificate, in which case the client must send a certificate and perform a signature, which the server will verify using the public key in the client certificate. The client is then authenticated under whichever "name" is written in this certificate. This is described in sections 7.4.6 and 7.4.8 of the TLS standard.

  • Use SRP. This is a Password Authenticated Key Exchange protocol in which the client and the server mutually authenticate through the knowledge of a shared secret. What is mightily cool about PAKE in general, and SRP in particular, is that the scheme is strong even when the shared secret is of low entropy (say, this is a "password"), because it resists attempts at offline dictionary attacks: in simple words, the protocol is such that if an attacker wants to "try" a potential password, he must interact with either the server or the client in some way, and must do so for every single try. The attacker never gains enough information to check passwords on his own machines only.

SRP avoids all the murky business of certificates. Unfortunately, SRP is not yet widely supported; GnuTLS is an opensource library which implements SSL/TLS servers and clients, and supports SRP.

  • 1
    There are quite a few patches around for TLS-SRP (rfc5054), check trustedhttp.org
    – pepe
    Nov 26, 2011 at 1:31

SSL/TLS will provide this and would probably be the easiest way to get mutual authentication working. This is done using client certificates. Without knowing what server and browser software, I couldn't point you in the right direction on setup, however. I did find this info which discusses Apache.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .