NodeJS пересылка клиентских SSL-сертификатов

Я работаю над серверным приложением 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.info("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? Или есть другой / лучший способ сделать это?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
858
1

Ответы 1

I understand I can get the certificate details in request object, but how to retrieve the crt and key from that object?

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

Другие вопросы по теме