1

Я знаю, что есть много тем и статей, но я действительно крутлю свои колеса на этом.

У меня есть экземпляр NodeJS, работающий на TLS. Мне нужен другой сервер для подключения к нему с помощью cURL. К сожалению, я не могу сделать -k из-за ограничений используемой версии cURL.

Поэтому при подключении не должно быть предупреждений о сертификатах.

Мои мысли таковы:

1. to generate a cert 
2. generate a certificate signing request
3. acquire the CA
4. sign the certificate with the CA
5. Configure NodeJS to send the CA, Cert, and Key during handshakes
6. Have the requesting server do a cURL command, specifying the certificate in the command.

Это имеет какой-то смысл или это задом наперед? У меня много проблем с дифференцированием каждого из них.

Спасибо,

редактировать

Таким образом, по-видимому, я понятия не имею, что я делаю, основываясь на ответах. Если бы я мог получить копию CA, открытый и закрытый ключи. Как тогда я буду действовать? Пожалуйста, будьте многословны.

1 ответ1

2

К сожалению, я не могу сделать -k из-за ограничений используемой версии cURL.

Это неправильный подход с самого начала. -k отключает любую проверку сертификата сервера и, таким образом, облегчает атаку «человек посередине», т. е. допускает именно то, что предотвращает https.

  1. Сконфигурируйте NodeJS для отправки CA, Cert и Key во время рукопожатий
  2. Пусть запрашивающий сервер выполнит команду cURL, указав в ней сертификат.

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

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

К сожалению, ваш вопрос описывает попытку решить неизвестную проблему (см. Проблему XY). Обычный способ сделать SSL состоит в том, чтобы центр сертификации (ЦС) уже был доверенным клиентом, и сертификат, выданный этим ЦС. В большинстве случаев для этого используется общедоступный ЦС, такой как Let's Encrypt, поскольку клиенту уже доверяют эти ЦС (поставляется с ОС или браузером). В вашем вопросе нет объяснения, почему вы не можете пойти по этому пути и вместо этого должны изобрести собственное решение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .