注意:这个问题有点问here,但没有回答。
我需要在两个不同环境中运行的两个Tomcat服务器之间安全地通信。我可以控制两个服务器。
我想通过从Server-B到Server-A的简单REST调用来做到这一点。
在与之通信的服务器Server-A上,我可以轻松地使用自签名证书设置HTTPS。如果将此证书导入到服务器B上的Java密钥库中,则可以从服务器B上的Java代码发出受信任的HTTPS Rest调用。
我还要添加一个确认,确认对Server-A的Rest调用肯定来自Server-B,并且消息具有完整性。
我的计划是在服务器B上生成一个自签名证书,并将此证书导入到服务器A上的Java密钥库中。然后,对于来自Server-B的任何REST调用,我将首先生成消息的SHA-512哈希,并使用与Server-B证书关联的私钥对哈希签名。当服务器A收到消息时,将重新计算SHA-512哈希并检查哈希的准确性(无消息篡改)。然后,我将根据服务器B的证书的公钥检查哈希的签名。
对于一些额外的偏执狂,我可以使用Server-A的证书的公钥对REST消息进行加密;对于短消息,这应该没问题(不需要对称加密)。
这似乎是个好计划吗? Tomcat是否有更简单的机制来做到这一点?
在这种情况下,Java Messaging API似乎“繁重”。