使用来自 node-json-rpc 库的客户端时使用正确的 SSL 协议
using correct SSL protocol when using client from node-json-rpc library
我正在使用这个库 https://www.npmjs.com/package/node-json-rpc 使客户端调用 https 服务器公开 RPC apis。
但是,当我 运行 代码时,我得到这个错误
Error: SSLv3 methods disabled
at new SecureContext (_tls_common.js:50:20)
at Object.createSecureContext (_tls_common.js:89:13)
at Object.connect (_tls_wrap.js:1120:48)
at Agent.createConnection (https.js:119:22)
at Agent.createSocket
我的密码是
var rpc = require('node-json-rpc');
var options = {
port: 443,
host: 'mynode',
path: '/rpc',
strict: true,
ssl: {
// protocol: 'TLSv1.2'
}
};
this.client = new rpc.Client(options);
this.client.call(
{"jsonrpc": "2.0", "method": "txpool_content", "params": [], "id": 1},
function (err, res) {
if( err ) {
resolve(null);
}
else {
resolve(res.result);
}
}
);
我确保这个 api 可以从 Postman 使用这个端点 https://mynode/rpc
我知道此协议 SSLv3
可能对 node js 禁用,但我在文档中找不到任何其他选项。
我没有证书和密钥。
来自图书馆代码(node_modules/node-json-rpc/lib/rpcclient.js
):
if (conf.ssl) {
options.servername = conf.ssl.sniName || 'RPC-Server';
options.secureProtocol = conf.ssl.protocol || 'SSLv3_client_method';
...
看来您可以在选项中设置 { ssl: { protocol: 'something' } }
。
那是什么something
?我们来看看 Node.js 文档:
https://nodejs.org/api/https.html:
The following additional options from tls.connect()
are also accepted: ... secureProtocol
...
https://nodejs.org/api/tls.html#tls_tls_connect_options_callback:
secureProtocol
<string>
Optional SSL method to use. The possible values are listed as SSL_METHODS
, use the function names as strings. For example, 'TLSv1_2_method'
to force TLS version 1.2
他们提供的示例是一个很好的起点,但该页面还链接到可用 SSL 方法的完整列表:https://www.openssl.org/docs/man1.1.0/ssl/ssl.html#Dealing-with-Protocol-Methods
我正在使用这个库 https://www.npmjs.com/package/node-json-rpc 使客户端调用 https 服务器公开 RPC apis。
但是,当我 运行 代码时,我得到这个错误
Error: SSLv3 methods disabled
at new SecureContext (_tls_common.js:50:20)
at Object.createSecureContext (_tls_common.js:89:13)
at Object.connect (_tls_wrap.js:1120:48)
at Agent.createConnection (https.js:119:22)
at Agent.createSocket
我的密码是
var rpc = require('node-json-rpc');
var options = {
port: 443,
host: 'mynode',
path: '/rpc',
strict: true,
ssl: {
// protocol: 'TLSv1.2'
}
};
this.client = new rpc.Client(options);
this.client.call(
{"jsonrpc": "2.0", "method": "txpool_content", "params": [], "id": 1},
function (err, res) {
if( err ) {
resolve(null);
}
else {
resolve(res.result);
}
}
);
我确保这个 api 可以从 Postman 使用这个端点 https://mynode/rpc
我知道此协议 SSLv3
可能对 node js 禁用,但我在文档中找不到任何其他选项。
我没有证书和密钥。
来自图书馆代码(node_modules/node-json-rpc/lib/rpcclient.js
):
if (conf.ssl) {
options.servername = conf.ssl.sniName || 'RPC-Server';
options.secureProtocol = conf.ssl.protocol || 'SSLv3_client_method';
...
看来您可以在选项中设置 { ssl: { protocol: 'something' } }
。
那是什么something
?我们来看看 Node.js 文档:
https://nodejs.org/api/https.html:
The following additional options from
tls.connect()
are also accepted: ...secureProtocol
...
https://nodejs.org/api/tls.html#tls_tls_connect_options_callback:
secureProtocol
<string>
Optional SSL method to use. The possible values are listed asSSL_METHODS
, use the function names as strings. For example,'TLSv1_2_method'
to force TLS version 1.2
他们提供的示例是一个很好的起点,但该页面还链接到可用 SSL 方法的完整列表:https://www.openssl.org/docs/man1.1.0/ssl/ssl.html#Dealing-with-Protocol-Methods