Используйте 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://localhost:5000, он перенаправляется на https://localhost:5001.

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

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


person Miguel Moura    schedule 13.09.2018    source источник
comment
Какой браузер вы используете?   -  person Shaun Luttin    schedule 13.09.2018
comment
Я пробовал Firefox и Google Chrome   -  person Miguel Moura    schedule 13.09.2018
comment
Вы пробовали использовать флаг --trust в команде dev-certs? dotnet dev-certs https -ep "localhost.pfx" -p 1234 --trust.   -  person Shaun Luttin    schedule 13.09.2018
comment
Чтобы действительно получить доверие, самозаверяющий сертификат должен быть добавлен в хранилище доверенных сертификатов в Windows (что и достигается с помощью аргумента --trust), но вы также можете просто сделать это вручную. Однако это влияет только на браузеры, которые полагаются на хранилище доверенных сертификатов Windows, которым, насколько мне известно, являются только IE, Edge и Chrome. В частности, Firefox этого не делает, поэтому вам все равно придется вручную добавить исключение в Firefox.   -  person Chris Pratt    schedule 13.09.2018


Ответы (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.

person Shaun Luttin    schedule 13.09.2018
comment
При выборе варианта, который вы предлагаете, все еще необходимо добавить сертификат в путь к проекту и добавить часть пустельги в настройки? Я спрашиваю об этом, потому что думал, что с помощью локального файла сертификата, например в корне проекта, то добавлять его в магазин не нужно. - person Miguel Moura; 13.09.2018
comment
Нет. С флагом --trust нет необходимости добавлять пользовательские настройки пустельги в appsettings.json. - person Shaun Luttin; 13.09.2018
comment
Как насчет SSL для производства с использованием НЕ Самоподписанного сертификата? - person Wes; 13.04.2021
comment
@Wes Я предлагаю открыть для этого еще один вопрос StackOverflow. - person Shaun Luttin; 14.04.2021