[英]HTTP Proxy( Node.js) Not Performing Proper SSL Verification
我需要創建一個能夠處理SSL證書驗證的代理服務器。 我一直在使用Node.js的http-proxy
庫來處理ssl驗證。 我的問題是,代理服務器在驗證客戶端是否具有正確的憑據方面不做任何事情。
我有一個代理服務器,並且我通過了具有ssl certRequire = true
和rejectUnauthroized = 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
部分,然后將這些選項移到頂層。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.