6

We are trying to come up with a scheme to secure http communication between our internal servers.

Are there any good established schemes out there? The requirements we have are:

  1. The clients and servers are physically located in different places and need to communicate over the internet.
  2. The client needs guarantees that it is talking to the server it thinks it's talking to.
  3. The server needs guarantees that it is talking to the client it thinks it's talking to.
  4. The server needs to be able to block communication with a particular client in the event it's been compromised.
  5. There exists a secure out-of-band communication that allows for the distribution of things like keys.

Our current idea is to secure all communication using SSL. A certificate chain to validate the server's certificate will be distributed to the clients (and only the clients) using the secure out-of-band communication. Whenever the client communicates with the server, it is pinned to using this certificate chain. This guarantees the client is talking to the correct server, and gives us some loose guarantees on the server side that it's talking to one of a set of semi-trusted clients.

A public-private key pair is generated for each client. The public keys are stored on the server (via the secure out-of-band communication). The following workflow is used to authenticate the client.

The session token is then sent in all future requests. The session token can be revoked etc. If a client is compromised, it's public key can be removed from the server and all session tokens associated with that client revoked.

Is there a better way to be doing this? Is there anything we've not considered?

2

Use IPSec to create a secure VLAN. Better performance than HTTPS and more secure(no payload is in plaintext anymore). You can use your own PKI infrastructure and with some custom code you can integrate strongswan easily in your systems; it provides hooks for nearly every stage of the connection. Plus you also get client authentication (machine certificates).

  • Also worth mentioning is one can use symmetric encryption, asymmetric encryption, or no encryption at all and just enforce packet integrity with IPsec. The later is great for allowing network security devices (IDS/IPS) to inspect traffic while ensuring it hasn't been tampered with. – user2320464 Oct 31 '14 at 16:46

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.