Подтвердить что ты не робот

Npm http-server с SSL

Я использую пакет npm "http-server" (https://www.npmjs.com/package/http-server), чтобы настроить простой веб-сервер, но я не могу получить это использовать SSL. Моя команда в package.json

http-server -p 8000 -o -S

с cert.pem и key.pem в моем корневом каталоге (пока). Опция "-o" открывает браузер на странице по умолчанию, но страница обслуживается с использованием HTTP и даже не доступна через HTTPS. Я не получаю никаких ошибок или предупреждений. Я также попытался добавить опции "-C" и "-K" без везения. Кто-нибудь имел успех в этом пакете?

4b9b3361

Ответ 1

Просто для справки в будущем, моя проблема была решена путем обновления пакета до последней версии в package.json. Я скопировал старый файл примера без обновления номеров версий.

Ответ 2

Сначала убедитесь, что у вас есть key.pem и cert.pem. Вы можете сгенерировать их с помощью этой команды:

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

После ввода команды вам будет предложено несколько вопросов. Используйте 127.0.0.1 качестве значения для "Common name", если вы хотите иметь возможность установить сертификат в хранилище корневых сертификатов ОС или в браузере, чтобы он был доверенным.

Это генерирует пару ключ-сертификат, и она будет действительна в течение примерно 10 лет (точнее, 3650 дней).

Затем вам нужно запустить сервер с -S для включения SSL и -C для вашего файла сертификата:

$ http-server -S -C cert.pem -o
Starting up http-server, serving ./ through https
Available on:
  https:127.0.0.1:8080
  https:192.168.1.101:8080
  https:192.168.1.104:8080
Hit CTRL-C to stop the server

Ответ 3

Firefox не принимал самозаверяющие сертификаты, поэтому потребовалось немного больше усилий. Сначала создайте CA:

openssl req -batch -new -newkey ec:<(openssl ecparam -name prime256v1) -nodes -keyout ca-key.pem -x509 -out ca.pem -days 3650 -subj "/CN=A localhost CA"

Добавьте ca.pem (локальный CA) к доверенным сертификатам вашей ОС и/или Firefox (другие браузеры используют системные CA). Храните файлы ca * в надежном месте для будущего использования, поэтому вам больше не придется делать это снова.

Затем для любого сайта, на котором вы работаете, и всякий раз, когда вы хотите изменить настройки, создайте cert.pem и key.pem с помощью:

openssl req -batch -new -newkey ec:<(openssl ecparam -name prime256v1) -nodes -keyout key.pem -subj /CN=localhost | openssl x509 -req -CAkey ca-key.pem -CA ca.pem -CAcreateserial -out cert.pem -days 365 -extfile <(echo subjectAltName=DNS:localhost)

Одни и те же команды в несколько строк для удобства чтения:

# Create CA
openssl req -batch -new -newkey ec:<(openssl ecparam -name prime256v1) -nodes \
  -keyout ca-key.pem -x509 -out ca.pem -days 3650 -subj "/CN=A localhost CA"

# Create a CSR for localhost, then sign it by CA
openssl req -batch -new -newkey ec:<(openssl ecparam -name prime256v1) -nodes \
  -keyout key.pem -subj /CN=localhost | \
  openssl x509 -req -CAkey ca-key.pem -CA ca.pem -CAcreateserial -out cert.pem \
  -days 365 -extfile <(echo subjectAltName=DNS:localhost)