Используйте ssl-сертификат в asp.net core 2.1 при разработке

В файле appSettings приложения ASP.NET Core 2.1 I есть следующее:

"Kestrel": {
  "Certificates": {
    "Default": {
      "Path": "localhost.pfx",
      "Password": "1234"
    }
  }
}  

Я создал сертификат с помощью команды dotnet:

dotnet dev-certs https -ep "localhost.pfx" -p 1234

И я скопировал файл localhost.pfx в корень проекта вместе с файлом appSettings.

Когда я запускаю проект на http: // локальный: 5000, он перенаправляется на https: // локальный: 5001.

Однако я получаю сообщение об ошибке браузера, в котором говорится, что соединение небезопасно, и с просьбой добавить исключение.

Что я делаю неправильно?

Какой браузер вы используете?

Shaun Luttin 13.09.2018 19:16

Я пробовал Firefox и Google Chrome

Miguel Moura 13.09.2018 19:21

Вы пробовали использовать флаг --trust в команде dev-certs? dotnet dev-certs https -ep "localhost.pfx" -p 1234 --trust.

Shaun Luttin 13.09.2018 19:23

Чтобы действительно доверять, самозаверяющий сертификат должен быть добавлен в хранилище доверенных сертификатов в Windows (что и достигается с помощью аргумента --trust), но вы также можете просто сделать это вручную. Однако это влияет только на браузеры, которые полагаются на хранилище доверенных сертификатов Windows, которым, насколько мне известно, являются только IE, Edge и Chrome. В частности, Firefox этого не делает, поэтому вам все равно придется вручную добавить исключение в Firefox.

Chris Pratt 13.09.2018 19:34
11
4
13 558
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Короткий ответ

Включите опцию --trust.

dotnet dev-certs https -ep "localhost.pfx" -p 1234 --trust

Это создает сертификат, который будет работать с этим appsettings.json:

"Kestrel": {
  "Certificates": {
    "Default": {
      "Path": "localhost.pfx",
      "Password": "12345"
    }
  }
}

Примечания

Если вам нужно воссоздать сертификат, сначала очистите хранилище сертификатов.

dotnet dev-certs https --clean

Опция --trust сразу будет работать с Chrome; Однако с Firefox нам все равно нужно будет добавить исключение безопасности.

Использование --trust означает, что нам больше не нужно добавлять раздел "Kestrel" в файл appsettings.json.

При выборе варианта, который вы предлагаете, все еще необходимо добавить сертификат в путь к проекту и добавить часть пустельги в настройки? Я спрашиваю об этом, потому что думал, что используя локальный файл сертификата, например в корне проекта, то добавлять его в магазин не нужно.

Miguel Moura 13.09.2018 19:35

Нет. С флагом --trust нет необходимости добавлять пользовательские настройки пустельги в appsettings.json.

Shaun Luttin 13.09.2018 19:45

Как насчет SSL для производства с использованием НЕ Самоподписанного сертификата?

Wes 13.04.2021 19:55

@Wes Я предлагаю открыть для этого еще один вопрос StackOverflow.

Shaun Luttin 14.04.2021 01:36

Другие вопросы по теме