HTTP代理(Node.js)不执行正确的SSLvalidation

我需要创build一个能够处理SSL证书validation的代理服务器。 我一直在使用Node.js的http-proxy库来处理sslvalidation。 我的问题是代理服务器没有做任何事情来validation客户端是否有适当的凭据。

我有一个代理服务器,我传递的ssl certRequire = truerejectUnauthroized = true的服务器options 。 但是,客户端能够连接到没有证书/密钥的服务器,我不知道为什么。

这是我的代码:

  var options = { ssl: { key: fs.readFileSync('/Users/grantherman/Desktop/ssl_certificates/client1-key.pem'), cert: fs.readFileSync('/Users/grantherman/Desktop/ssl_certificates/client1-crt.pem'), requestCert: true, rejectUnauthorized: true } }; var proxy = new httpProxy.createProxyServer(options); http.createServer(function (req, res) { setTimeout(function () { proxy.web(req, res, { target: { host: 'localhost', port: 9002 } }); }, 200); }).listen(8002); //Server http.createServer(function (request, response) { //Handles the response response.writeHead(200, {'Content-Type': 'text/plain'}); response.write('request successfully proxied to server'); response.end(); response.on('data', function(data){ console.log(data); }); response.on('end', function(){ console.log("end"); }); response.on('error', function(err){ console.log(err); }); }).listen(9002); 

请让我知道如果你需要任何澄清!

***** UPDATE *****

这是我删除ssl对象后的代码。

 var options = { key: fs.readFileSync('/Users/grantherman/Desktop/ssl_certificates/client1-key.pem'), cert: fs.readFileSync('/Users/grantherman/Desktop/ssl_certificates/client1-crt.pem'), requestCert: true, rejectUnauthorized: false 

};

即使这样,我仍然能够连接到没有证书的代理。

  var options = { ssl: { key: fs.readFileSync('/Users/grantherman/Desktop/ssl_certificates/client1-key.pem'), cert: fs.readFileSync('/Users/grantherman/Desktop/ssl_certificates/client1-crt.pem'), requestCert: true, rejectUnauthorized: true } }; 

问题在于你的嵌套 – 这些选项不存在于ssl对象内,它们是options中的顶级项目。 拿出内部ssl部分,并将这些选项移到顶层。