Мне нужно создать прокси-сервер, способный обрабатывать проверку сертификатов SSL. Я работал с библиотекой Node.js http-proxy
для обработки проверки ssl. Моя проблема в том, что прокси-сервер ничего не делает для проверки того, имеет ли клиент правильные учетные данные.HTTP-прокси (Node.js) Не выполняется надлежащая проверка SSL
У меня есть прокси-сервер, и я передаю сервер options
, у которого есть ssl certRequire = true
и rejectUnauthroized = true
. Тем не менее, клиент может подключиться к серверу с no cert/key, и я не уверен, почему.
Вот мой код:
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
};
Даже при этом я все еще могу подключиться к прокси без сертификата.
Так что даже когда я удаляю ssl и у меня все есть, прокси-сервер по-прежнему не обрабатывает прокси-сервер. Я сделал завиток, и я использовал свой браузер, и я все еще могу подключиться к прокси без сертификата. Я обновлю свой пост с новым кодом. –
вы создаете сервер http. вам нужен вместо этого модуль 'https' (и вызывается' https.createServer') – Joe
Итак, это сработало! Почему это так? Почему настройки прокси-сервера работают только на сервере https вместо HTTP-сервера? –