NodeJS перенаправляет клиентские SSL-сертификаты - PullRequest
0 голосов
/ 25 августа 2018

Я работаю над серверным приложением Node.js, которое поддерживает SSL и принимает сертификаты клиентов. Я использую следующий код для создания сервера https.

const options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem'),
  ca: fs.readFileSync('ca.pem'),
  requestCert: true,
  rejectUnauthorized: true
};

https.createServer(options,app).listen(8090, function(){
    console.log("Listening on 8090");
});

Другие клиентские приложения на базе Node.js могут подключаться с использованием своего сертификата SSL и получать ответ службы.

Однако, с моего сервера, я хочу сделать еще один вызов на сервере и передать тот же сертификат клиента, который я получил. Я просто хочу переслать тот же сертификат, я понимаю, что могу получить информацию о сертификате в объекте запроса, но как извлечь crt и ключ из этого объекта?

Я хочу сделать что-то вроде ниже:

app.get('/myservice', (req,res) => {
    //req.socket.getPeerCertificate(true);
    var agent = new https.Agent({
        cert: somelibrary(req.socket.getPeerCertificate(true).??????),
            key: somelibrary(req.socket.getPeerCertificate(true).??????),
    });
    fetch('http://AnotherServiceURL', { method: 'GET' agent}).then(function(response){
        res.json(response);
    });

});

Существует ли какая-либо библиотека, которая может преобразовывать данные сертификата запроса таким образом, чтобы они передавались как key и cert? Или есть другой / лучший способ сделать это?

1 Ответ

0 голосов
/ 25 августа 2018

Я понимаю, что могу получить информацию о сертификате в объекте запроса, но как извлечь crt и ключ из этого объекта?

Хотя можно было бы передать сам клиентский сертификат, его невозможно снова использовать в качестве клиентского сертификата в другом соединении TLS к конечной цели. Для этого вам потребуется доступ к закрытому ключу клиента, который, как следует из названия, является закрытым для клиента. Что касается получения сертификата клиента (то есть публичной части), см. Node.js: доступ к сертификату клиента .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...