Я использую CRA (Создать приложение React) и привязываю его к local.example.com:443
, используя следующий файл .env
:
HOST=local.example.com
PORT=443
HTTPS=true
Это гарантирует, что при запуске скаффолда CRA он попытается привязать к local.example.com:443
и самозаверяющий сертификат выдается. Я могу принять самоподписанный в браузере и иметь локальный сайт с поддержкой HTTPS. HTTPS необходим для некоторых вещей, таких как Secure
cookies et c., Поэтому он мне нужен как для локальной разработки, так и для удаленного развертывания. Кроме того, proxy
можно установить на example.com
, чтобы локальный интерфейс использовал удаленный сервер при тестировании, что является еще одним мотивом для этой настройки.
Это работает, когда имя хоста (example.com
) не не имеет HSTS, но когда он есть, непринятый самоподписанный сертификат, который создает CRA, отклоняется. Сертификат создается для localhost
, это первая проблема, потому что HSTS example.com
требует, чтобы сертификат был выдан для example.com
, чтобы быть действительным. Firefox:
Firefox не доверяет этому сайту, поскольку использует сертификат, недействительный для local.example.com. Сертификат действителен только для следующих имен: localhost, localhost.localdomain, lvh.me, * .lvh.me, [:: 1], 127.0.0.1, fe80 :: 1
Но Кроме того, поскольку это самозаверяющий сертификат, браузер отклонит его, если пользователь не примет его первым, что возможно сделать без HSTS, поскольку страница с предупреждением о самозаверяющем сертификате позволяет это сделать, но с HSTS отображается другая страница с предупреждением (та, на которой показана ошибка, указанная выше), в которой говорится, что HSTS не разрешит навигацию до go, и вы готовы.
В Chrome , можно игнорировать HSTS
, набрав letmein
на странице предупреждений HSTS, которая работает, но это не решение в Firefox, и мне интересно, есть ли лучший способ.
Может CRA выдает сертификат, чтобы он выглядел так, как если бы он был выдан для example.com
, чтобы HSTS example.com
его принял? Я предполагаю, что все еще будет проблема с самоподписанием, но если это возможно, возможно, вместо этого появится страница с предупреждением о самоподписанном сертификате, если пользователь не сможет принять сертификат и продолжить?