HTTP代理(Node.js)未执行正确的SSL验证

格兰特·赫尔曼

我需要创建一个能够处理SSL证书验证的代理服务器。我一直在使用Node.js的http-proxy库来处理ssl验证。我的问题是,代理服务器在验证客户端是否具有正确的凭据方面不做任何事情。

我有一个代理服务器,并且我通过了options具有sslcertRequire = true的服务器rejectUnauthroized = true但是,客户端无需证书/密钥就能连接到服务器,我不确定为什么。

这是我的代码:

 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);

如果您需要任何澄清,请告诉我!

*****更新*****

这是删除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部分并将这些选项移到顶层。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

node.js http代理重定向

来自分类Dev

Node JS TCP代理:使用Node JS设置HTTP隧道

来自分类Dev

Node JS TCP代理:使用Node JS设置HTTP隧道

来自分类Dev

Node.js HTTP.get()添加用户代理

来自分类Dev

如何检测 Node.js 中 HTTP 代理的存在?

来自分类Dev

我如何通过node.js http.Client使用和授权http代理

来自分类Dev

Node.js-我将如何转发HTTP流量(反向代理)?

来自分类Dev

节点JS http代理-创建的URL问题

来自分类Dev

IIS反向代理到node.js

来自分类Dev

AngularJS + ServiceStack + Node.js作为代理?

来自分类Dev

带有https的Node.js代理

来自分类Dev

从Node.js中的地址设置代理

来自分类Dev

使用Apache代理的Node.js路由

来自分类Dev

使用请求模块的Node.JS代理

来自分类Dev

使Chrome使用SSL隧道作为HTTP请求的代理(HTTP CONNECT)

来自分类Dev

HTTPS URL的基本代理身份验证返回HTTP / 1.0 407必需的代理身份验证

来自分类Dev

Node.js代码未执行

来自分类Dev

HTML在Node Js中未正确显示

来自分类Dev

如何通过HTTP代理连接SSL套接字?

来自分类Dev

Nginx反向代理Websocket身份验证-HTTP 403

来自分类Dev

使用http代理进行git存储库身份验证

来自分类Dev

如果代理的IP被阻止,正确的HTTP状态代码是什么?

来自分类Dev

Xcode Charles(HTTP代理)未捕获本地主机流量

来自分类Dev

如果NODE代理未运行,则阻止显示ANGULAR页面

来自分类Dev

有关使用Node.js“代理”服务器代理CSS和JS的建议

来自分类Dev

带有模块请求的node.js中的代理身份验证

来自分类Dev

Docker中Nginx代理后面的node.js代理应用

来自分类Dev

如何使用js获取HTTP用户代理标头?

来自分类Dev

如何在代理下的节点js中发送HTTP请求

Related 相关文章

热门标签

归档