IIS не удалось найти действительный сертификат с темой
Я развертываю приложение RC2 шаблона ASP.NET Angular SPA с опцией Identity Server на моем локальном сервере IIS. Я получаю исключение ниже. IIS не может получить доступ к информации о моей локальной сертификации.
Application: w3wp.exe
CoreCLR Version: 6.0.21.52210
.NET Version: 6.0.0
Description: The process was terminated due to an unhandled exception.
Exception Info: System.InvalidOperationException: Couldn't find a valid certificate with subject 'CN=my-subdomain.azurewebsites.net' on the 'CurrentUser\My'
at Microsoft.AspNetCore.ApiAuthorization.IdentityServer.SigningKeysLoader.LoadFromStoreCert(String subject, String storeName, StoreLocation storeLocation, DateTimeOffset currentTime)
at Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ConfigureSigningCredentials.LoadKey()
at Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ConfigureSigningCredentials.Configure(ApiAuthorizationOptions options)
at Microsoft.Extensions.Options.OptionsFactory`1.Create(String name)
at Microsoft.Extensions.Options.UnnamedOptionsManager`1.get_Value()
at Microsoft.Extensions.DependencyInjection.IdentityServerBuilderConfigurationExtensions.<>c.<AddClients>b__8_1(IServiceProvider sp)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
Я создал сертификат через
New-SelfSignedCertificate -DnsName "my-subdomain.azurewebsites.net" -CertStoreLocation "cert:\CurrentUser\My"
Я установил свой appsettings.json как
"IdentityServer": {
"Key": {
"Type": "Store",
"StoreName": "My",
"StoreLocation": "CurrentUser",
"Name": "CN=my-subdomain.azurewebsites.net"
},
"Clients": {
"MarketPlace": {
"Profile": "IdentityServerSPA"
}
}
Когда я публикую этот сайт с той же конфигурацией, что и публикация папки, он работает правильно. Как исправить ошибку IIS, чтобы получить доступ к сертификату?
1 ответ
У меня была аналогичная проблема с веб-API .NetCore (.NetCore 5.0), реализованным с использованием архитектуры CLEAN (шаблон CQRS), мне нужно было 2 сертификата для запуска моего приложения.
- CA выдал сертификат для внешней связи вне области уровня приложения
- Самоподписанный для связи на уровне приложения, например, для связи с другими службами/службами библиотеки классов или, возможно, с БД. (Для внутренней связи приложение будет искать сертификат, созданный на уровне домена или на уровне сервера)
Таким образом, в настройке JSON для создания приложения нам нужно указать на самозаверяющий сертификат, а при публикации в приложении в IIS нам нужно выбрать сертификат, выданный ЦС, в раскрывающемся списке SSL-сертификат на экране «Редактировать привязку».
пункт 1: сертификат, выданный CA, должен быть импортирован в IIS. пункт 2: в то время как самоподписанный должен присутствовать в MMC, личном или корневом или веб-хостинге, на локальном компьютере или текущем пользователе, то же самое должно быть указано в JSON для создания приложения.
Чистая архитектура:https://github.com/jasontaylordev/CleanArchitecture