两台服务器之间的安全通信

Secure communication between two servers

我想将我的用户的私钥安全地存储在单独的服务器上(我们称之为 B),它用于签署、解密信息。 B 将密钥存储在数据库 (postgres) 上。服务器A (public) 发送信息B。理想情况下 B 需要获取私钥,用 信息签署令牌 并将其发送回 A .而不是将私钥发送到 A,这可能是一个安全问题(如果服务器 A 受到威胁)。

我的选择是:

  1. 网络套接字
  2. Https 请求(https://nodejs.org/api/https.html#https_https_request_options_callback

问题:

  1. 是否有任何其他选项可以安全地与两个服务器通信?
  2. 如果服务器 B 在端口“7000”上,我如何确保只有服务器 A 可以访问它?
  3. HSM 服务器对我的情况有何帮助以及它如何与其他服务器通信(websocket 或 https 请求)?

我可以采取简单的方法,连接服务器 B 端口“7000”上的数据库和来自 A[=62 的 运行 查询=] 但正如我所说,它不那么安全。我听说 HSM handles/decrypts 信息并将其发回,所以我虽然可以对普通服务器做类似的事情。

谢谢任何帮助将不胜感激


更新

@zaph 已回答问题 2 和 3。

问题: 服务器 A 是否需要执行 https 请求并包含私有ip服务器地址B,例如https://203.0.113.25?然后服务器 B 将使用 API 路由器 来处理请求。但是 ip 不是 DNS,因此由于证书的原因它不会工作。那么服务器如何通信,send/receive 数据?

参考:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario3.html

对于其他人:使用安全组,将它们配置为只有特定实例可以访问它。发出一个正常的请求,例如:domain.com:PORT。 PORT 是正在侦听请求的实例...

When you specify a security group as the source or destination for a rule, the rule affects all instances associated with the security group. Incoming traffic is allowed based on the private IP addresses of the instances that are associated with the source security group (and not the public IP or Elastic IP addresses).

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html