Можно ли получить сертификат X509Certificate из хранилища сертификатов с помощью ASP.NET без разрешений файловой системы?

StackOverflow https://stackoverflow.com//questions/20007824

Вопрос

Где должен быть сертификат, указанный в Trusted Root Certification Authorities узел в certmgr.msc храниться так, чтобы веб-приложение IIS могло получить его и подписать с его помощью утверждение SAML?Есть ли способ напрямую извлечь сертификат из «улья» сертификатов, не требуя разрешений файловой системы?Или необходимо экспортировать сертификат в папку, к которой у встроенного пользователя IIS7 есть права доступа?

А X509Certificate2.Import() первый параметр метода fileName.

Если я экспортирую сертификат и помещу файл в иерархию папок проекта Visual Studio 2012 и предоставлю полный путь к Импорт() метод, импорт сертификата завершается успешно, но только если приложение работает в Visual Studio встроенный сервере, а не в том случае, если он работает на локальном веб-сервере IIS.

Я пробовал использовать Дружественное имя с X509KeyStorageFlags.MachineKeySet но это не сработало.

РЕДАКТИРОВАТЬ:Это работает при использовании встроенного сервера Visual Studio, но не ЛОКАЛЬНОГО сервера IIS7 в Windows 7:

            certStore = New X509Store(StoreLocation.CurrentUser)
            certStore.Open(OpenFlags.ReadOnly)
            Dim thumbprint As String
            thumbprint = ConfigurationManager.AppSettings("thumb").ToString
            certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, False)
            certStore.Close()
            cert = certCollection(0)

поэтому мне нужно выяснить, как предоставить пулу приложений по умолчанию доступ к этому сертификату в Windows 7.

Это было полезно?

Решение

Вы не «импортируете», просто создаете экземпляр.Формально вы открываете хранилище ключей и просматриваете сертификаты.И да, вам не нужны какие-либо разрешения файловой системы, однако для доступа к закрытому ключу идентификатор вашего пула приложений должен иметь разрешение на доступ к ключу, вы устанавливаете разрешение в оснастке сертификата консоли mmc.

Редактировать:код для доступа к сертификату будет выглядеть примерно так:

var store = new X509Store( name, location );
store.Open( OpenFlags.ReadOnly );

foreach ( var cert in store.Certificates )
   ... loop and match, by thumbprint, friendly name or whatever else
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top