dotnet dev-сертификатам не доверяют

#.net #asp.net-core #https

#.net #asp.net-core #https

Вопрос:

Я работаю над книгой Адама Фримена «Pro ASP.Net Ядро 3». Я добрался до введения в https. Он инструктирует нас использовать Powershell и запускать эти команды в таком порядке

 dotnet dev-certs https --clean
dotnet dev-certs https --trust
  

Когда я запускаю clean команду, я получаю сообщение о том, что

«Сертификаты разработки HTTPS успешно удалены с компьютера».

Но когда я запускаю команду trust, я получаю:

«Не найден действительный сертификат HTTPS с ключом, доступным через разделы безопасности. Чтобы исправить это, будет запущена следующая команда: ‘sudo security set-key-partition-list -D localhost -S unsigned:,teamid: UBF8T346G9’ Эта команда сделает ключ сертификата доступным для всех разделов безопасности и может запросить у вас пароль. Для получения дополнительной информации см.: https://aka.ms/aspnetcore/2.1/troubleshootcertissues

Действительный сертификат HTTPS с ключом, доступным через разделы безопасности, не найден. Чтобы исправить это, будет запущена следующая команда: ‘sudo security set-key-partition-list -D localhost -S unsigned:,teamid: UBF8T346G9’ Эта команда сделает ключ сертификата доступным для всех разделов безопасности и может запросить у вас пароль. Для получения дополнительной информации см.: https://aka.ms/aspnetcore/3.1/troubleshootcertissues

Было запрошено доверие к сертификату разработки HTTPS. Если сертификат ранее не был доверенным, будет отображено приглашение с подтверждением. Нажмите да в приглашении, чтобы доверять сертификату. Произошла ошибка, связанная с доверием к сертификату разработчика HTTPS «.

Я пытался

  • dotnet dev-certs https результатом выполнения является сообщение «Действительный сертификат HTTPS уже присутствует».
  • запуск powershell от имени администратора. Но я получил те же ошибки. В книге говорится, что я могу получить пару диалоговых окон, но я их не получил.
  • dotnet --version дает мне 3.1.200.

Что мне нужно сделать, чтобы сертификат заработал?

Комментарии:

1. A valid HTTPS certificate is already present. Похоже, что сертификат разработчика сгенерирован, вы можете попытаться вручную доверить сертификат с помощью ASP.NET Дружественное имя для базового сертификата разработки HTTPS путем копирования из текущего пользователя> Личные> Сертификаты в Текущий пользователь> Доверенные корневые центры сертификации> Сертификаты в пользовательском интерфейсе менеджера сертификатов. Затем проверьте, работает ли это для вас.

2. Great! That worked! Привет @ROBERTRICHARDSON, рад слышать, что обходной путь помог решить проблему. Я пишу сообщение, и вы можете принять его как ответ, который поможет другим членам сообщества быстро найти этот случай и решить аналогичную проблему.

3. Я получаю тот же круговой блок …. но на Mac. (Я не фанат Mac, но в нашей гибридной среде java / dotnet-core разработчикам выдаются Mac, поскольку сетевые политики ПК настолько жестко заблокированы). Почему мой компьютер лжет мне ?? :). «Сертификаты разработки HTTPS успешно удалены с компьютера».

4. Будущие читатели. Здесь кто-то показывает идею «большего молотка»: github.com/dotnet/AspNetCore.Docs/issues / . … удаление инструмента dotnet —установка инструмента global dotnet-dev-certs dotnet — установка глобального dotnet-dev-certs dotnet dev-certs https —trust (к вашему сведению, это не работает для Mac, но я это видел.. так что оставил здесь хлебную крошку)

Ответ №1:

Хорошо … я нашел супер-подсказку MAC по ссылке github ниже.

(Это ~ может быть переведено на сторону ПК … но я не могу это проверить)

https://github.com/dotnet/sdk/issues/10422

Столкнулся с той же проблемой в macOS. В качестве решения в цепочке ключей удалите старый сертификат локального хоста в разделе «Система» и воссоздайте его с помощью команд dotnet, описанных в документации. Он будет помещен в раздел «вход».

Поэтому, чтобы лучше описать приведенную выше цитату, я добавил сюда снимок экрана (изображение ниже с пурпурными / фуксиевыми / розоватыми кругами), чтобы указать «вот где это на Mac» ….. того, что описывает текст выше..

Итак, мои шаги были:

 dotnet dev-certs https --clean

dotnet dev-certs https --check

// (DO THE MANUAL keychain-old-localhost removal NOW (image below) 
// (before running the below terminal commands)

dotnet dev-certs https --check

dotnet dev-certs https 

dotnet dev-certs https --trust
  

введите описание изображения здесь

Комментарии:

1. Это сработало отлично! Я бы никогда не понял этого самостоятельно.

2. @MerkleGroot Я тебя слышу. Вы чувствуете, что находитесь в лабиринте, занятом Минотавром … пытаетесь исправить это. Пожалуйста, сообщите, был ли у вас Mac или ПК.

3. Это был Mac, и я далек от эксперта по Mac.

4. Mac — мой наименее (и акцент на наименее) предпочтительный O / S. Я буду запускать win10, и я буду запускать «настоящий linux» (например, ubuntu.. с помощью «cinnamon»). но mac o / s, а не поклонник. Однако в моей нынешней компании разработчики получают «права администратора» на компьютерах Mac, но не на ПК. Так что я должен жить на одном из них по необходимости.

Ответ №2:

Что мне нужно сделать, чтобы заставить сертификат работать?

По какой-то причине dotnet CLI может выдавать исключение, когда мы используем dotnet dev-certs https --trust command для доверия сертификату разработки HTTPS.

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

  1. Запустите dotnet dev-certs https команду для создания сертификата HTTPS (если вы его не сгенерировали)

  2. Скопируйте сертификат с помощью ASP.NET Дружественное имя для базового сертификата разработки HTTPS путем копирования из текущего пользователя> Личные> Сертификаты в Текущий пользователь> Доверенные корневые центры сертификации> Сертификаты в пользовательском интерфейсе диспетчера сертификатов, как показано ниже.

    введите описание изображения здесь

Комментарии:

1. Для меня это сработало 1) с помощью certmgr.msc резервного копирования всех localhost сертификатов, Personal а затем их удаления 2) dotnet dev-certs https привело к A valid HTTPS certificate with a key accessible across security partitions was not found... 3) я скопировал все еще действующий ASP.NET Core HTTPS development certificate из текущего пользователя> Доверенные корневые центры сертификации> Сертификаты для текущего пользователя> Личные> Сертификаты Это сработало, по крайней мере, настолько, что dotnet run сработало