npm http-сервер с 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" без удачи. Кто-нибудь имел успех с этим пакетом?
2 ответа
Просто для дальнейшего использования, моя проблема была решена путем обновления пакета до последней версии в package.json. Я скопировал и вставил старый пример файла без обновления номеров версий.
Во-первых, убедитесь, что у вас есть key.pem
а также cert.pem
файлы. Вы можете сгенерировать их с помощью этой команды:
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
Это генерирует пару ключ-сертификат, и она будет действительна в течение примерно 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
Я установил mkcert
:
brew install mkcert
brew install nss # if you use Firefox
mkcert -install
Затем в каталоге вашего проекта:
mkcert 0.0.0.0 localhost 127.0.0.1 ::1
Наконец, я переименовал сгенерированные файлы:
0.0.0.0+3-key.pem
->key.pem
0.0.0.0+3.pem
->cert.pem
И выполнил следующую команду:
http-server -S -C cert.pem -o
Потом я получил:
Я сослался на этот блог: https://qiita.com/walkers/items/b90a97a99bbb27f6550f(написано на японском языке)
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)