автор:Maud Nalpas Исходная ссылка:How to use HTTPS for local development переводчик:Yodonicc Иногда вам нужно использовать HTTPS Запустите локальный веб-сайт разработки. В этой статье объясняются инструменты и методы, позволяющие сделать это безопасно и быстро. осторожный существоватьбольшую часть времени,
http://localhost
сделает то, что вам нужно: в браузере он ведет себя так же, как HTTPS 🔒 Очень похоже. Поэтому некоторые из них не могут быть развернуты в HTTP работаю на сайте API Можно найти в http://localhost
беги дальше. 这意味着您只需хотетьсуществоватьособенныйТолько тогда, когда существование необходимоместныйиспользовать HTTPS(ВидетьLocКогда Alhost следует использовать HTTPS? ),примерНапример, пользовательское имя хостаили Кроссбраузерная безопасность печенье. Если это то, что вам нужно, продолжайте читать!
существуют В этой статье,оlocalhost
Утверждение верное127.0.0.1
и[::1]
также действителен,Потому что все они описывают локальный адрес компьютера.,Также называется «обратным адресом». кроме того,чтобы все было просто,Номер порта не указан. поэтому,когда ты видишьhttp://localhost
час,пожалуйста Воля Это понимается какhttp://localhost:{PORT}
или http://127.0.0.1:{PORT}
。
Если вы используете HTTPS,инадеятьсяместныйразвиватьвеб-сайтповедениеМожет обращаться к сайтам HTTPS(Если ваше производствовеб-сайтеще нетиспользовать HTTPS,пожалуйстаОтдайте приоритет переходу на HTTPS ). В большинстве случаев можно подумать http://localhost
поведениеПохоже на: HTTPS-сайт。носуществуют в некоторых случаях,тебе нужноиспользовать HTTPS Запустите сайт локально. Теперь давайте посмотрим, как это сделать.
Включение локальных сайтов разработки HTTPS и доступ https://localhost
или https://mysite.example
(Пользовательское имя хоста),тебе нужно TLS-сертификат。ноине любой Сертификатбудет принят браузером:Сертификат Требуется объект, которому доверяет ваш браузер.знак,Эти сущности называютсяДоверенный центр сертификации (CA) 。
тебе нужно Создать сертификат,ииспользоватьв зависимости от вашего устройстваи БраузерЛокально доверенный центр сертификациисделай этознак。 Вы можете использовать инструменты mkcert Это достигается с помощью нескольких команд. Вот как это работает:
Принципиальная схема работы mkcert
mkcert (и подобные инструменты) предлагают несколько преимуществ:
Мы рекомендуем использовать mkcert для создания сертификатов TLS для локальной разработки.
Многие операционные системы могут предоставлять библиотеки для генерации сертификатов, например. openssl . и mkcert и В отличие от аналогичных инструментов, такие библиотеки могут могущий始终生成正确из Сертификат,или Возможно, потребуется выполнить сложные команды,И это может быть не кроссплатформенное использование.
вопрос Что нас интересует в этой статье mkcert даэтот,而不даэтот。
осторожныйбегать
mkcert -install
час,Никогда не экспортируйте и не делитесь Зависит от mkcert автоматически созданоrootCA-key.pem
。Злоумышленник, получивший этот файл, может провести атаку на любой веб-сайт, к которому вы имеете доступ.。他们可以拦截从您из电脑到任何веб-сайт(банк、Медицинская организацияилисоциальная сеть)из安全пожалуйста求。еслитебе нужно知道rootCA-key.pem
место, чтобы убедиться, что оно безопасно, бегитеmkcert -CAROOT
。 - только mkcert 用于цель развития,и且永远不хотетьхотеть求最终用户бегать mkcert Заказ. - развивать团队:Все члены команды должныодинУстановитьибегать mkcert (вместо сохранения и обмена CA и сертификат).
按照Инструкция по эксплуатациисуществоватьв операционной системе Установить mkcert. Например, в macOS начальство:
brew install mkcert
brew install nss # if you use Firefox
Запустите следующую команду в терминале:
mkcert -install
Это создает локальный центр сертификации. (CA)。mkcert созданный локальный CA толькосуществовать您из设备上местныйприем。
В существующем терминале перейдите в корневой каталог веб-сайта и любой каталог, используемый для сохранения Сертификата.
Затем запустите:
mkcert localhost
Если ваше собственное имя хоста mysite.example
,Пожалуйста, запустите:
mkcert mysite.example
Приведенная выше команда выполняет две операции:
Сертификат теперь готов и подписан центром сертификации, которому локально доверяет ваш браузер. Большинство шагов выполнено, но ваш сервер еще не знает о сертификате!
Теперь вам нужно указать серверу использовать HTTPS (поскольку серверы разработки предпочитают HTTP по умолчанию) и использовать только что созданный сертификат TLS.
Точные действия зависят от вашего сервера. Ниже приведены несколько примеров:
👩🏻💻 Используйте узлы:
server.js
(заменять{PATH/TO/CERTIFICATE...}
и{PORT}
):
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('{PATH/TO/CERTIFICATE-KEY-FILENAME}.pem'),
cert: fs.readFileSync('{PATH/TO/CERTIFICATE-FILENAME}.pem'),
};
https.createServer(options, function (req, res) {
// server code
})
.listen({PORT});
👩🏻💻 использовать http-server:
Запустите сервер следующим образом(заменять{PATH/TO/CERTIFICATE...}
):
http-server -S -C {PATH/TO/CERTIFICATE-FILENAME}.pem -K {PATH/TO/CERTIFICATE-KEY-FILENAME}.pem
-S
буду использовать HTTPS бегать服务器,-C
используется длянастраивать Сертификат,-K
Используется для настройки ключа.
👩🏻💻 использовать React Сервер разработки:
Отредактируйте следующим образом package.json
,изаменять{PATH/TO/CERTIFICATE...}
:
"scripts": {
"start": "HTTPS=true SSL\_CRT\_FILE={PATH/TO/CERTIFICATE-FILENAME}.pem SSL\_KEY\_FILE={PATH/TO/CERTIFICATE-KEY-FILENAME}.pem react-scripts start"
Например, если вы сделаете следующее и создадите localhost
Сертификат создан:
|-- my-react-app
|-- package.json
|-- localhost.pem
|-- localhost-key.pem
|--...
Так start
Скрипт должен выглядеть так:
"scripts": {
"start": "HTTPS=true SSL_CRT_FILE=localhost.pem SSL_KEY_FILE=localhost-key.pem react-scripts start"
👩🏻💻 Другие примеры:
https://localhost
илиhttps://mysite.example
:这час就существоватьиспользовать HTTPS существующий местный запуск вашего веб-сайта. Вы не увидите никаких предупреждений браузера, потому что в браузере есть Воля. mkcert Признан органом, выдающим местный Сертификат.Серверы могут иметь разные порты HTTPS.
хотетьиспользовать HTTPS Запустите локальный сайт разработки:
Если вы еще не установили его mkcert, например в macOS начальство:
brew install mkcert
Проверять Windows и Linux на установка mkcertиллюстрировать。
Затем создайте локальный центр сертификации:
mkcert -install
mkcert {YOUR HOSTNAME e.g. localhost or mysite.example}
Эта команда создает действительный сертификат (предоставленный mkcert
автоматическая подпись).
https://{YOUR HOSTNAME}
,И вы больше не будете получать никаких предупрежденийосторожный пожалуйстатолько用于цель развития,Никогда не экспортируйте и не делитесь
rootCA-key.pem
Файл (если тебе нужно знать об этом файлеместо, чтобы убедиться, что оно безопасно, бегитеmkcert -CAROOT
)。
Также можно обойтись без использования mkcert Такой местный Сертификаторган, выдавший документ,而даПодпишите сертификат самостоятельно。
Обратите внимание на некоторые недостатки этого подхода:
#allow-insecure-localhost
localhost
Автоматически обходить это предупреждение. Это действительно немного хлопотно.<center> сипользовать от знака Сертификат предупреждать, отображаемый браузером
Если вы не указали какой-либо Сертификат, Так React и Vue сервер разработки HTTPS Эта опция создаст собственный знак Сертификата в фоновом режиме. Несмотря на то, что это быстро, вы получите предупреждение браузера и столкнетесь с другими вопросами, связанными с указанным выше собственным знаком Сертификата. К счастью, вы можете использовать встроенную внешнюю среду. HTTPS Параметрыи指定Зависит от mkcert или Подобные инструменты создают локальный заслуживающий доверия сертификат. Перейдите на React. и mkcert Пример Проверять, как это сделать.
Если вы используете HTTPS существуют открыть в браузере местный запустить веб-сайт, проверить браузер Воля местный сервер Сертификат разработки. Когда он видит Сертификат по вашему знаку, он проверяет, зарегистрированы ли вы в качестве доверенного органа сертификации. Поскольку это не так, браузер не может доверять этому сертификату, и он сообщит, что ваше соединение небезопасно; Вы делаете это на свой страх и риск. Если вы выберете это, Так Воля создаст HTTPS соединять.
Вы также можете найти методы, основанные на подписании сертификатов реальным центром сертификации (а не локальным центром сертификации).
Если вы существуете, рассматривая эти методы, имейте в виду следующее:
Не могущий
Используется для:
localhost
идругойбронироватьдоменное имя,Например example
или test
。использовать HTTPS доступместныйбегатьвеб-сайтиз另一种方法даиспользоватьобратный прокси,Например ngrok 。
Несколько моментов, которые следует учитывать:
Если вы используете了 mysite.example
Пользовательское имя хоста, подобное этому, Так Можно найти в Chrome использовать знак, чтобы заставить Волю mysite.example
认作да安全из。Пожалуйста, избегайте этого метода,потому что:
mysite.example
всегда решаетместныйадрес,Невыполнение этого требования может привести к раскрытию производственных учетных данных.Большое спасибо всем рецензентам и участникам за их вклад и отзывы, особая благодарность Райану Сливи, Филиппо Вальсорде, Милице Михайлии и Роуэну Меревуду. 🙌
文中照片Приходить源:@ananduon существовать Unsplash
Примечание:Особая благодарность техническому директору Дажао (Zhao Da) за проверку и исправление перевода этой статьи.。