我正在尝试使用http / https模块从nodejs到tomcat服务器进行API调用
我有两个api url选项
http://samleapiurl.com/getdata - 这很好用,我得到了反应
var options = {
host: 'samleapiurl.com',
port: 80,
path: '/getdata'
};
http.get(options, function(resp) {
var body = '';
resp.on('data', function(chunk) {
body += chunk;
});
resp.on('end', function() {
res.end(body);
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
https://samleapiurl.com:8443/getdata
var options = {
host: 'samleapiurl.com',
port: 8443,
path: '/getdata'
};
https.get(options, function(resp) {
var body = '';
resp.on('data', function(chunk) {
body += chunk;
});
resp.on('end', function() {
res.end(body);
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
第二个选项不起作用,它会抛出类似
的错误Got error: 10232:error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert
internal error:openssl\ssl\s23_clnt.c:741:
如果尝试在https模式下访问8443,我不确定为什么会出现此错误。 是否有人面临过类似的问题?
答案 0 :(得分:0)
您可以尝试限制tomcat可以使用哪些密码,如this blog中所述,建议将以下行添加到server.xml的SSL Connector部分:
ciphers="SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"