Как обновить устаревшие сертификаты разработчика в Visual Studio

0 комментария • 194 просмотров

При работе с HTTPS‑сайтами, API‑приложениями или микросервисами Visual Studio генерирует самоподписанный сертификат «Developer Certificate for Visual Studio».

  • Для ASP.NET Core (или .NET 5/6/8) он хранится в %USERPROFILE%\.dotnet\store\.
  • Для старых ASP.NET Framework проектов он размещён в %APPDATA%\Microsoft\Crypto\RSA\MachineKeys и автоматически добавляется в хранилище сертификатов Windows.

Срок действия сертификата ограничен, поэтому через некоторое время браузер (или клиентская программа) откажется доверять вашему локальному сайту. В таком случае появляется ошибка “Криптографическая ошибка: SSL/TLS handshake failed” или “The certificate is not trusted”.

Ниже - пошаговый процесс обновления сертификата для двух сценариев.

1. Обновление сертификата в ASP.NET Core (или более новых .NET)

Алгоритм

Что делаем Команда / действие
1 Удаляем старый сертификат из хранилища dotnet store dotnet dev-certs https --clean
2 Создаём новый сертификат (выполняется автоматически при запуске приложения, но можно задать вручную) dotnet dev-certs https --trust
(Команда открывает диалог доверия в Windows и сохраняет сертификат в Trusted Root Certification Authorities)
3 Проверяем статус dotnet dev-certs https --check -v
4 Если приложение всё ещё не запускается, перезапускаем Visual Studio или dotnet run

Подробный разбор аргументов команд

  • --clean - удаляет все сертификаты из каталога ~\.dotnet\store.
  • --trust - генерирует новый самоподписанный сертификат, сохраняет его в хранилище и добавляет в доверенные корневые центры.
  • --check -v - выводит подробный статус (действителен ли сертификат, есть ли у него цепочка доверия).

Возможные ошибки

Ошибка Решение
The certificate was not found in the trust store. Убедитесь, что запускаете команду от имени администратора. Если используете Docker/WSL, сертификат может находиться в другом каталоге - смотрите переменную окружения DOTNET_CLI_HOME.
dotnet dev-certs не запустилось из терминала Visual Studio Запустите PowerShell от имени администратора и выполните команду вручную. После успешного выполнения сертификат будет доступен для всех проектов .NET Core.

В списке сертификатов он будет отображаться под именем ASP.NET Core HTTPS development certificate


2. Обновление сертификата для старых сайтов на ASP.NET Framework

Здесь будет продемонстрировано два способа.

IisExpressAdminCmd - это утилита командной строки для управления Microsoft IIS Express.

Алгоритм для IIS Express

Что делаем Команда / действие
1 Удаляем старый сертификат из хранилища «Trusted Root Certification Authorities» Откройте mmc.exeCertificates (Local Computer)Trusted Root Certification Authorities → удалите сертификат с подписью Microsoft Visual Studio Development Certificate.
2 Переходим в каталог IIS Express В PowerShell:
cd C:\Program Files (x86)\IIS Express
3 Создаём новый сертификат и привязывем его к указаному сайту. Здесь важно указать ваш порт IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:44393/ -UseSelfSigned

В списке сертификатов он будет отображаться под именем IIS Express Development Certificate


Если сайт на полноценном IIS (не Express)

Что делаем Команда / действие
1 Удаляем старый сертификат из хранилища «Trusted Root Certification Authorities» Откройте mmc.exeCertificates (Local Computer)Trusted Root Certification Authorities → удалите сертификат с подписью Microsoft Visual Studio Development Certificate.
2 Создаём новый сертификат вручную (если нет автоматической генерации) В PowerShell:
$cert = New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation Cert:\LocalMachine\My
3 Добавляем его в «Trusted Root Certification Authorities» Import-Certificate -FilePath $cert.PSPath -CertStoreLocation Cert:\LocalMachine\Root
4 Привязываем сертификат к вашему веб‑сайту (IIS) В Internet Information Services (IIS) ManagerSites → ваш сайт → Bindings… → добавьте HTTPS‑binding с выбранным сертификатом.
5 Перезапускаете IIS/Visual Studio, чтобы изменения вступили в силу.

Автоматическое обновление через Visual Studio

В идеальном мире Visual Studio перед каждым запуском сайта должен следить за жизненным циклом сертификатов разработки, и обновлять их при устаревании или создавать при отсутствии. Однако на практике это происходит не всегда, что и заставило меня наконец раз и навсегда задокументировать в заметки, а потом и в блог, эти способы ручного обновления сертификатов.

0 194
Обсуждение 0
  • Пока нет комментариев. Будьте первым!

Для добавления комментариев необходимо войти в систему