I need to communicate securely between two Tomcat servers running in two
different environments.  I have control of both servers.

I would like to do this through a simple REST call from Server-B to
Server-A.

On the server I am communicating to, Server-A, I can easily set up HTTPS
with a self-signed certificate.  If I import this certificate into the Java
Keystore on Server-B, I can make a trusted HTTPS Rest call from my Java
code on Server-B.

Good instructions for doing this can be found here:
https://blog.10pines.com/2017/09/25/how-to-communicate-via-https-between-two-tomcat-servers-using-a-self-signed-certificate/


I would also like to add a confirmation that the Rest call to Server-A is
certainly coming from Server-B and the message has integrity.

My plan is to generate a self-signed certificate on Server-B and  import
this certificate into the Java Keystore on Server-A.  Then for any REST
call from Server-B I will first generate an SHA-512 hash of the message and
sign the hash with the private key associated with the Server-B
certificate.   When Server-A receives the message, the SHA-512 hash will be
recalculated and checked for accuracy of the hash (no message tampering).
I will then check the signature of the Hash against the public key of the
certificate from Server-B.

For a little bit of extra paranoia I may encrypt the REST message with the
public key of the certificate from Server-A; for short messages this should
be fine (no need for Symmetric encryption).

Does this seem like a good plan?

Thx in advance for any suggestions.

Mike

Reply via email to