【发布时间】:2018-02-11 04:32:01
【问题描述】:
我们有一个 node.js/express.js 应用程序,目前只使用单向(服务器认证)SSL,并且工作正常,但现在,我正在尝试启用它以使用两向/客户端-经过身份验证的 SSL,但我在执行此操作时遇到问题(节点版本为 8.5.0)。
这是当前应用程序的初始部分,用于设置 SSL 服务器:
if (sslListen) {
var fs = require('fs');
var https = require('https');
// Setup HTTPS
var options = {
pfx: fs.readFileSync(SECURITY_DIR + 'server.pfx'),
passphrase: xxxxx
};
logger.log("++++++++ Listen SSL Mode ++++++++");
var secureServer = https.createServer(options, app)
.listen(listenPort);
} else {
logger.log("++++++++ Listen NON-SSL Mode ++++++++");
app.listen(listenPort, function () {
logger.log("\n\n2-" + BANNER + "-2\n\n");
});
}
我们在“/”处有一个测试 URI,当我使用 Firefox 访问该 URI 时,我得到了正确的(虚拟)响应消息。
所以我在选项中添加了“requestCert”:
if (sslListen) {
var fs = require('fs');
var https = require('https');
// Setup HTTPS
var options = {
pfx: fs.readFileSync(SECURITY_DIR + 'server.pfx'),
passphrase: xxxxx,
requestCert: true
};
logger.log("++++++++ Listen SSL Mode ++++++++");
var secureServer = https.createServer(options, app)
.listen(listenPort);
} else {
logger.log("++++++++ Listen NON-SSL Mode ++++++++");
app.listen(listenPort, function () {
logger.log("\n\n2-" + BANNER + "-2\n\n");
});
}
当我使用 Firefox 进行测试时,我进入了一个错误页面:
“安全连接失败
连接到 XXXXXX.dev:4269 时出错。 SSL 对等方无法协商一组可接受的安全参数。错误代码:SSL_ERROR_HANDSHAKE_FAILURE_ALERT"
当我测试时,我在节点端看不到任何输出(错误或其他)。
谁能知道可能是什么问题或如何诊断它?
谢谢, 吉姆
【问题讨论】: