Я создал сертификат SSL/TLS для локального хоста для моего серверного веб-API ASP.NET Core, могу ли я поделиться им с моим интерфейсным приложением Angular?

У меня есть внутренний сервер, работающий в ASP.NET Core. Там я сгенерировал сертификат SSL/TLS, и он был автоматически добавлен в доверенный ЦС на моем компьютере. Я также хочу обслуживать свое угловое приложение через SSL/TLS для локальной разработки. Внешний интерфейс Angular также работает на локальном хосте, просто на другом порту. Нужно ли мне создавать другой сертификат для моего приложения Angular, так как оно находится на другом порту? (Имеет ли значение разница в порте? В этот момент он считается другим доменом?). Если бы я мог поделиться этим, как бы я это сделал?

Спасибо


person O.MeeKoh    schedule 12.03.2019    source источник


Ответы (1)


для сертификата порт не имеет значения. вы просто защищаете свои ресурсы в angular и asp.net с помощью этого сертификата. убедитесь, что все службы, к которым вы пытаетесь подключиться, находятся на https, иначе ваш браузер заблокирует исходящий запрос. единственное место, где порт имеет значение, - это политики безопасности (политики безопасности контента) против XSRF, XSS, ...

просто добавьте что-то вроде следующего в package.json:

"scripts": {
    "start": "ng serve --ssl --ssl-key c:\\certificates\\localhost.key  --ssl-cert c:\\certificates\\localhost.crt --host 0.0.0.0"

примечание: --host 0.0.0.0 требуется только в том случае, если вы хотите получить доступ к серверу разработки из-за пределов локального хоста...

В вашем браузере/разработчике добавьте его в доверенный ЦС. вот ссылка на то, как это сделать для хрома:

https://support.securly.com/hc/en-us/articles/206081828-How-to-manually-install-the-Securly-SSL-certificate-in-Chrome

person jcuypers    schedule 12.03.2019
comment
Я создал свой собственный ключ и сертификат. Проблема в том, что теперь у меня есть два сертификата localhost. Один для ASP.NET Core и один, который я создал сам для всех целей. Chrome требует, чтобы в ваших сертификатах присутствовало альтернативное имя субъекта. Когда я запускаю angular, он переходит на https://local... это все еще вызывает предупреждение «Ваше соединение не является частным». Когда я проверяю сертификаты управления Chrome, я вижу только сертификат localhost из ядра asp.net, а не тот, который я только что создал. Импорт сертификата, похоже, на самом деле не импортирует его в браузер. Вот где я застрял. - person O.MeeKoh; 12.03.2019
comment
как насчет следующего: support.securly.com/hc/en-us/articles/ - person jcuypers; 12.03.2019
comment
если вы добавите сертификат для локального хоста, он будет работать. оно работает. по сути это просто индикатор и не более того. ваш трафик в любом случае зашифрован. - person jcuypers; 12.03.2019
comment
Что решило проблему для меня, так это тот факт, что мне пришлось импортировать созданный сертификат в «Доверенные корневые центры сертификации» в Chrome. Это в сочетании с добавлением 'sslKey: ‹name.key›' 'sslCert: ‹name.cert›' в файле angular.json в файле параметров serve › и с запуском ng serve --ssl помогло мне. - person O.MeeKoh; 13.03.2019
comment
это то, что было описано в ответе и документе в комментариях ... не могли бы вы принять мои ответы и комментарии. - person jcuypers; 13.03.2019
comment
способ angular.json является альтернативой использованию его в качестве параметров командной строки. - person jcuypers; 13.03.2019