【问题标题】:Using SSL over TCP to establish safe connection between two servers with NodeJS使用基于 TCP 的 SSL 使用 NodeJS 在两台服务器之间建立安全连接
【发布时间】:2016-11-13 04:54:20
【问题描述】:

我正在尝试将包从一台服务器发送到另一台服务器,但我需要确保发件人是“真实”的发件人并且无法拦截该包,我如何使用 SSL 和 NodeJS 或其他方式来做到这一点.

这就是我所做的:

服务器代码:

server = tls.createServer(function(c) {
console.log('server connected',

c.authorized ? 'authorized' : 'unauthorized');
});

客户端代码:

var tls = require('tls');
var fs = require('fs');

var options = {
key  : fs.readFileSync('server.key'),
cert : fs.readFileSync('server.crt')
};

var client = tls.connect(9838, options, function () {

console.log(client.authorized ? 'Authorized' : 'Not authorized');

});

这个错误出来了:

Error: 101057795:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv handshake failure:openssl\ssl\s23_clnt.c:769:

【问题讨论】:

  • 是的,您可以使用正确实施的 SSL 来执行此操作,我的意思是在握手后检查对等方的身份,而不是做任何事情。

标签: node.js sockets ssl tcp handshaking


【解决方案1】:

为确保发送者(客户端)是“真实的”发送者,您可以尝试使用 TLS 客户端身份验证(或相互身份验证)。这意味着您需要一个客户端证书(和密钥)、一个服务器证书(和密钥)、颁发/签署服务器证书的 CA 证书以及颁发/签署客户端证书的 CA 证书。

首先,您的 TLS 服务器需要向任何连接的 TLS 客户端提供其证书;这意味着您需要configure its certificate and key。您还希望 TLS 服务器请求客户端将其证书发送到服务器,作为握手的一部分:

var tlsOptions = {
  cert: fs.readFileSync('server-cert.pem'),
  key: fs.readFileSync('server-key.pem'),
  ca: [ fs.readFileSync('client-ca-cert.pem'),
  requestCert: true,
  rejectUnauthorized: true
};

var server = tls.createServer(tlsOptions, function () {

然后,对于客户端,您configure it with its certificate and key,以及颁发/签署服务器证书的 CA 证书(以便客户端可以验证接收者是“真实的”):

var tlsOptions = {
  host: 'server.example.com',
  port: 9838,
  cert: fs.readFileSync('client-cert.pem'),
  key: fs.readFileSync('client-key.pem'),
  ca: [ fs.readFileSync('server-ca-cert.pem')
};

var client = tls.connect(tlsOptions, function () {

希望这会有所帮助!

【讨论】:

  • @kristianzivkovic 用于通过这些套接字发送/接收 JSON,您可以使用 node-json-socket 之类的东西,它处理有效负载的 TCP 层缓冲/解析。您的套接字是使用tls 而不是net 创建的这一事实与node-json-socket 无关。
猜你喜欢
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多