使用 SSL over TCP 在带有 NodeJS 的两台服务器之间建立安全连接
Using SSL over TCP to establish safe connection between two servers with NodeJS
我正在尝试将一个包从一台服务器发送到另一台服务器,但我需要确保发件人是 "real" 并且无法拦截该包,我如何使用 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:
为确保发送者(客户端)是 "real" 发送者,您可以尝试使用 TLS 客户端身份验证(或相互身份验证)。这意味着您需要一个客户端证书(和密钥)、一个服务器证书(和密钥)、issued/signed 服务器证书的 CA 证书和 issued/signed 客户端证书的 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,以及issued/signed服务器证书的CA证书(以便客户端可以验证接收者是"real"那个) :
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 () {
希望对您有所帮助!
我正在尝试将一个包从一台服务器发送到另一台服务器,但我需要确保发件人是 "real" 并且无法拦截该包,我如何使用 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:
为确保发送者(客户端)是 "real" 发送者,您可以尝试使用 TLS 客户端身份验证(或相互身份验证)。这意味着您需要一个客户端证书(和密钥)、一个服务器证书(和密钥)、issued/signed 服务器证书的 CA 证书和 issued/signed 客户端证书的 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,以及issued/signed服务器证书的CA证书(以便客户端可以验证接收者是"real"那个) :
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 () {
希望对您有所帮助!