【发布时间】:2018-11-29 16:41:37
【问题描述】:
我希望我的 node.js 服务器只允许包含 SSL 证书的 http 请求,以避免“中间人”
问题是使用自签名证书根本不起作用。
这是我的简单 node.js 服务器:
var fs = require('fs');
var https = require('https');
var util = require('util');
var options = {
key: fs.readFileSync('keys/myKey.key'),
cert: fs.readFileSync('keys/cert.crt'),
requestCert: true,
rejectUnauthorized: false,
agent: false,
};
https.createServer(options, function (req, res) {
console.log(new Date()+' '+
req.connection.remoteAddress+' '+
req.method+' '+req.url + 'auth = ' + req.client.authorized);
res.writeHead(200);
res.end("hello world\n");
}).listen(8443);
Client.authorized 将始终为 no,因为它是自签名证书。
知道我如何设法允许带有证书的请求并将没有证书的请求搁置到另一个地方吗?种类:
https.createServer(options, function (req, res) {
if (req.hasCertificateThatMatchTheOneOnMyServer) {
// do something
}
else {
// do something else
}
}
非常感谢。
【问题讨论】: