Назад | Перейти на главную страницу

Запуск HTTPS-сервера Node.js без полномочий root

Может ли сервер Node.js, обслуживающий приложение по HTTPS, запускаться от имени пользователя без полномочий root? Проблема в том, что, похоже, нет возможности запустить сценарий вроде этот без sudo, поскольку он должен иметь доступ к сертификатам.

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

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

Однако вы обнаружите, что вы не можете заставить свой сервер прослушивать порт HTTPS, 443, поскольку он является привилегированным (<1024).

Однако вы можете решить эту проблему разными способами, например:

  • Обратный прокси-сервер впереди (Apache / nginx), перенаправляющий запросы на nodejs, прослушивая порт более высокого уровня

  • Перенаправление портов 443 -> 1443 (или любой порт выше 1024) и nodejs, прослушивающие 1443

  • Использование возможностей Linux (CAP_NET_ADMIN IIRC).

Наверное, есть и другие способы.