MTLS - генерировать сертификат на стороне клиента nodejs

Нам нужно общаться между нашим сервером ec2 и нашим клиентским сервером через Mutual TLS. Запросы отправляются с нашего сервера на наш клиентский сервер, поэтому здесь мы являемся клиентом.

Я прочитал этот пост, в котором рассказывается о том, как генерировать файлы .

Первым шагом является создание центра сертификации (ЦС), которому доверяют и клиент, и сервер. ЦС — это просто открытый и закрытый ключ, причем открытый ключ заключен в самозаверяющий сертификат X.509.

Наш сертификат и их сертификаты должны быть подписаны из одного и того же корневого ЦС? кто должен это обеспечить?

Код на моей стороне должен быть таким:

const req = https.request(
  {
    hostname: 'myserver.internal.net',
    port: 443,
    path: '/',
    method: 'GET',
    cert: fs.readFileSync('client.crt'),
    key: fs.readFileSync('client.key'),
    ca: fs.readFileSync('ca.crt')
  },
  res => {
    res.on('data', function(data) {
      // do something with response
    });
  }
);

Итак, что мы должны предоставить друг другу? Мы не совсем понимаем, и они не предоставляют более подробной информации, просто попросили нас дать им сертификат...


person user2503775    schedule 27.01.2021    source источник


Ответы (1)


Наш сертификат и их сертификаты должны быть подписаны из одного и того же корневого ЦС? кто должен это обеспечить?

Поскольку контроль клиентского сертификата осуществляется на стороне сервера TLS (т. е. у клиента), он полностью зависит от того, что они ожидают. Им может потребоваться публично подписанный сертификат, им может потребоваться сертификат, подписанный их собственным ЦС. Или они могут просто проверить, используется ли конкретный сертификат, и для этого также будут приниматься самозаверяющие сертификаты.

person Steffen Ullrich    schedule 27.01.2021
comment
и что они должны нам предоставить? ca.crt из приведенного выше примера кода? - person user2503775; 27.01.2021
comment
Опять же - это полностью зависит от того, что они ожидают. Возможно, они ожидают от вас запроса на сертификат, который они подписывают как свой собственный ЦС и возвращают вам в качестве сертификата. Возможно, они просто ожидают от вас самоподписанный сертификат. Или что-то еще - спросите их или просмотрите любую документацию, которую они могли предоставить. Если они просто запросят сертификат создайте самозаверяющий сертификат и дайте им сертификат, но не ключ. Если они хотят чего-то другого, они, скорее всего, скажут вам. - person Steffen Ullrich; 27.01.2021
comment
Благодарю вас! наше облако AWS и у них есть менеджер сертификатов, но они не дают его экспортировать. - person user2503775; 27.01.2021
comment
Попросили купить новый сертификат и дать им ключ. Не самоподпись. Мы покупаем сертификат клиента, а не сертификат сервера, верно? Какой ЦС посоветуете? - person user2503775; 01.02.2021
comment
@ user2503775: Я не рекомендую ЦС. Опять же, это полностью зависит от них, какой CA они даже принимают. Также может быть, что у них есть особые требования по этому вопросу. - person Steffen Ullrich; 01.02.2021