Re: Доступ к сертификату
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 12.11.14 14:59
Оценка: 2 (1)
Здравствуйте, -Cheese-, Вы писали:

C>Из-под NetworkService сертификат не виден.

Ну так и логично. Вы же сами написали, что храните в хранилище пользователя. У Network Service туда доступа нет.

Только из вашего сообщения не очень понятно, что именно вы хотите получить.
Я так понял, что ваше ASP.Net приложение должно куда-то стучаться, используя в качестве credentials сертификат этого пользователя. Все верно?

Тогда возможные варианты:

У всех вариантов есть свои плюсы и минусы. Что вам подходит больше — смотрите сами.

P.S. Кстати, а почему вы используете для запуска AppPool встроекнную учетную запись. На сколько я помню для 7-го IIS крайне рекомендуют использовать ApplicationPoolIdentity. А у этих учетных записей точно есть свой профиль и как следствие — хранилище сертификатов.
Доступ к сертификату
От: -Cheese-  
Дата: 12.11.14 07:00
Оценка:
Всем привет.
Есть следующий вопрос.
В системе есть пользователь user, под которым залогинена машина. В его хранилище сертификатов есть персональный сертификат MyCert.
На машине запущен IIS и в нём Asp.Net приложение. AppPool для сайта с приложение запущен от NetworkService.
Стоит задача сделать запрос на определённый ресурс, используя сертификат MyCert.

Сертификат ищу так:
static X509Certificate2 GetCertificate()
{
  X509Store store = new X509Store(StoreLocation.CurrentUser);
  store.Open(OpenFlags.ReadOnly);
  X509Certificate2Collection cers = store.Certificates.Find(X509FindType.FindBySubjectName, "MyCert", false);
  return cers.Count == 0 ? null : cers[0];
}


И потом просто добавляю его в запросе http
  HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(requestUri);
  myHttpWebRequest.ClientCertificates.Add(cert);


Из-под NetworkService сертификат не виден.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.