Рейтинг:-1

Как сделать динамический сервер SSL HTTPS в nodejs без SNICallback

флаг vn

Я хочу создать динамический HTTPS-сервер SSL в node.js без использования SNICallback, возможно, используя открытый SSL?

Steffen Ullrich avatar
флаг se
* "может быть, с использованием открытого SSL?" * - nodejs уже использует библиотеку openssl, а SNICallback - это в основном способ, которым openssl требует от приложения реализации различных сертификатов на основе заданного имени сервера в TLS ClientHello (т.е. SNI). И просто заявление * «Я хочу ... без использования SNICallback» * выглядит для меня как [проблема XY] (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). - откуда это требование, т.е.какая реальная проблема диктует, что вы не можете использовать SNICallback?
wesley allison avatar
флаг vn
@SteffenUllrich Я хотел, чтобы его использовали как обычный производственный веб-сервер. Но я также хотел иметь возможность использовать такие инструменты, как curl, которые, похоже, не поддерживают SNICallback. если я не ошибаюсь.
Steffen Ullrich avatar
флаг se
curl — это HTTP-клиент, а не сервер. Все современные клиенты (включая curl) отправляют имя сервера в ClientHello и, таким образом, работают вместе с SNICallback в nodejs. Кроме того, вы также можете просто добавить различные контексты, используя [server.addContext](https://stackoverflow.com/a/25953210/3081018), который внутри использует обратный вызов SNI (или с точки зрения API openssl - [SSL_CTX_set_tlsext_servername_callback](https ://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_tlsext_servername_callback.html)). И если имя сервера не указано в ClientHello, addContext будет использовать последний добавленный контекст.
dave_thompson_085 avatar
флаг jp
(@SteffenUllrich), за исключением _устаревших_ инструментов, таких как маршрутизатор или встроенное устройство, выпущенное примерно в 2012 году или ранее без обновлений от производителя (например, обанкротившееся) - тогда вам может не хватать SNI.В этом случае вам нужно либо получить сертификат с SAN, в котором перечислены все имена серверов (клиенты в основном поддерживали SAN с начала нулевых), либо _если_ ваши имена серверов являются поддоменами одного и того же домена, получите сертификат с именем _wildcard_, которое соответствует им всем. В противном случае используйте старый способ, разные серверы на разных IP-адресах или портах :-(
wesley allison avatar
флаг vn
@SteffenUllrich, что я действительно имел в виду, так это создание HTTPS-сервера с нуля с использованием net.Server.
Steffen Ullrich avatar
флаг se
@wesleyallison: * «создание HTTPS-сервера с нуля с использованием net.Server» * - net.Server не поддерживает TLS. Для этого предназначен модуль TLS, который также поддерживает SNI. В любом случае, все это кажется здесь не по теме, поскольку serverfault.com не о программировании - для этого предназначен stackoverflow.com.
wesley allison avatar
флаг vn
@SteffenUllrich извините, если не по теме. Я думаю, что то, что я пытаюсь сделать, слишком сложно: я пытаюсь переделать TLS, я думаю

Ответить или комментировать

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